关于Python中函数重载问题的思考

Python中该如何实现Java的重写与重载 前言 文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 作者:清风python PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http://t.cn/A6Zvjdun 名词解析 Java中重写与重载的含义: 重写(Override), 是子类对父类的允许访问的方法的实现过程进行重新编写... 阅读详情

 

全文来自:IT工程技术网 http://www.systhinker.com/html/91/n-11591.html

 

昨天和飞天舞者讨论静态类型语言和动态类型语言优劣比较的时候,说到Python没有重载机制的问题。

后来想想挺有意思的,把思考的经过记录下来,欢迎拍砖。

  1. 重载(overload)和覆盖(override),在C++,Java,C#等静态类型语言类型语言中,这两个概念同时存在。前者是为了让同一个函数名(方法名)匹配不同的参数(个数不同,类型不同);后者是为了实现多态,在相同名称的函数(方法)和参数,在不同的类中(父类,子类),有不同的实现。
  2. Python是动态类型语言,不能简单地说它支持或者不支持重载,我的思考结果是,重载仍然存在,只是以不同的方式呈现。原来我们理解的重载,都是在静态类型语言中,关心参数个数以及参数类型;在动态类型语言里的重载根本不需要关心参数类型,只需要关心参数个数。而在Python里,关心参数个数的重载是由默认参数和传递参数名称来实现的。这样,程序员就没有必要自己来写两个名称一样而参数不同的函数了!事实上,在同一个模块或者同一个类中,写两个名称相同的方法的时候(参数个数是否相同不重要),后面的那个方法会简单覆盖前面的方面;其次,在子类继承父类时,同名(不同参)的方法也会简单覆盖(子类覆盖父类)。但是,这不说明Python没有重载,它只是不需要程序员自己来实现重载(如果说程序员还需要做什么的话,那就仅仅是要定义默认参数和参数名称)。如果你需要重载的话,”默认参数+参数名传递“就能达到你想要的重载了!
  3. 有贴子会说,默认参数和重载是两回事,但是我觉得,C++里不允许同时定义默认参数和重载函数是有道理的,Java里干脆取消默认参数,只有重载方法也是有道理的,这个道理,就是”默认参数和基于参数个数的重载是一回事“。只是默认参数太不好控制了,特别是遇到中间一个参数是默认参数的情况,Python提供的解决办法是:参数名传递!好牛叉的思想,呵呵,从这些小细节开始喜欢Python。别具一格,又把问题解决的如此完美,这就是处处为程序员着想的Python!

全文来自:IT工程技术网 http://www.systhinker.com/html/91/n-11591.html

零基础搭建本地AI绘画环境:Stable Diffusion 3.5保姆级安装教程(含中文优化方案) 本文提供零基础搭建本地AI绘画环境的详细教程,重点介绍Stable Diffusion 3.5的安装与中文优化方案。从硬件配置检查到软件依赖安装,再到核心组件配置与中文语义增强,教程涵盖全流程操作指南,帮助用户快速掌握AI文生图模型的本地部署技巧,提升创作效率。 阅读详情

相关推荐

【生产实践】PostgreSQL高可用Patroni安装(超详细已踩坑)

一 安装Patroni 0 Patroni 对Python的版本要求 我安装的是Patroni最新版本 :4.0.3,Patroni 对Python 版本有要求,没有具体的版本矩阵,但是根据每个版本发布信息可以得到以下信息 Patroni 4.0 需要 Python 3.8 以上(可以根据下面发布版本信息推理出) Version 3.0.2 Version 3.0.2 dropped support of Python older than 3.6. 版本3.0.2不再支持3.6版本以下的P

DBA之路的博客 1695

STM32模拟IIC驱动OLED与光照传感器实战

IIC总线作为嵌入式系统中广泛使用的通信协议,通过SCL时钟线和SDA数据线实现主从设备间的数据传输。其开漏输出结构和地址寻址机制,支持多设备挂载,特别适合资源受限的单片机系统。在STM32开发中,GPIO模拟IIC时序可规避硬件IIC的稳定性问题,通过精确控制起始信号、停止信号和数据有效窗口实现可靠通信。本文以STM32F103C8T6为核心,详细解析如何通过软件模拟IIC同时驱动SSD1306 OLED屏幕和BH1750FVI光照传感器,涵盖从总线原理、设备初始化到数据滤波显示的全流程实现,为环境监测等

weixin_30627341的博客 492

VMGSim_10.0_Build_128.rar

解压密码:123安装说明:https://blog.csdn.net/hongfu951/article/details/118517942Schlumberger VMGSim免费版是一款比较先进的稳态过程模拟器,致力于提高企业的生产力以及模型的保真度。它采用集成的流程图设计,不管您处于行业什么地位都能满足你的需求。新版本增加了许多全新的功能,例如新的膜单元操作、排放管理器以及燃烧加热器等等,您所需要的一切都能一个模拟器中,在稳态和动力学方面有着巨大的贡献,为流动研究项目提供了强有力的技术支持。

python碎片|python函数传参

参数类型 参数定义 参数: 在定义函数的时候,可以在函数后面的括号里定义数量不等的形参,形参就是形式上的参数,多个参数之间必须用逗号隔开(形参就是没有给赋值的参数) 实参 形参 实参类型 参数的传递方式 不定长参数 使用*a接受不定长参数,a的对应数据是一个元组 a 可以和其他的参数配合使用,但是注意a要放到后面,*kwargs前面,且带星号的参数只能有一个 *a 只能接受位置参数 **a 来接受关键字参数,a 的对应数据是一个字典 不定长参数: *args **kwargs 参数

CITYDATA 569

Python内置函数名由于被作为变量名而被覆盖之后恢复

代码实验展示: Python 3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license()" for more information. >>> sum([100,20,3]) 123 >>> >>> sum <built-in

敲代码的小风 2070

Python重新引入被覆盖的自带function

幸运的是, 这一问题还是很容易解决的,www.usus.cc 我们只需要使用__builtins__: from __builtins__ import int as py_int 这样一来我们又可以重新使用python的www.usus.ccint了, 但在此时叫做py_int. 一个function或变量的被覆盖最常见的原因是在引用时使用了"*": from s

asbgfhrty的专栏 570

python中的__init__函数重载与覆盖问题

python中的init函数重载与覆盖问题先看一段代码,利用重载特性实现了多个init函数。# coding:utf-8urlHk = 'http://apis.baidu.com/apistore/stockservice/hkstock?stockid=%s&list=1' urlSh = 'http://apis.baidu.com/apistore/stockservice/stock?st

BetterWorld的专栏 2万+

python支持重载吗_python不支持重载函数

注意,python是动态编程语言,因此没有重载这个概念。这是因为形参没有类型定义,同名函数一旦定义,后者会覆盖前着,也就是说:最后一次定义有效1 import os234 def tt(sa,sb):5 return sa+sb67 def tt(sa,sb,sc):8 return sa-sb+sc91011 if __name__=="__main__":12 prin...

weixin_39800331的博客 1080

python不支持重载函数

注意,python是动态编程语言,因此没有重载这个概念。这是因为形参没有类型定义, 同名函数一旦定义,后者会覆盖前着,也就是说:最后一次定义有效   1 import os   2   3   4 def tt(sa,sb):   5     return sa+sb   6   7 def tt(sa,sb,sc):   8     return sa-sb+sc

longshenlmj的专栏 3853

python方法重载_关于类:如何在Python中使用方法重载

我尝试在python中实现方法重载:class A:def stackoverflow(self):print 'first method'def stackoverflow(self, i):print 'second method', iob=A()ob.stackoverflow(2)但是输出是second method 2;类似地:class A:def stackoverflow(sel...

weixin_39625987的博客 748

C#基础(11)函数重载

我们通过这些例子的学习,想毕你一定已经掌握了函数重载的相关内容,我相信你只要稍加练习,便能达到很熟练的程度。不过不管知识点难或者简单,还是那句话,学习路上,戒骄戒躁,脚踏实地。请期待我的下一篇博客!

a6s686的博客 1675

java方法重载_在Python中该如何实现Java的重写与重载

前言文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。作者:清风pythonPS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http://t.cn/A6Zvjdun名词解析Java中重写与重载的含义:重写(Override), 是子类对父类的允许访问的方法的实现过程进行重新编写,返回值和形参都不能改变。即外壳不变...

weixin_39904612的博客 124

python方法与重载_你知道Java的重写与重载,在Python中该如何实现吗?

名词解析Java中重写与重载的含义:重写(Override), 是子类对父类的允许访问的方法的实现过程进行重新编写,返回值和形参都不能改变。即外壳不变,核心重写!重载(overloading), 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。参考:https://www.runoob.com/java/java-override-overload.html可是在Python...

weixin_39720516的博客 126

你知道Java的重写与重载,在Python中该如何实现吗?

名词解析 Java中重写与重载的含义: 重写(Override), 是子类对父类的允许访问的方法的实现过程进行重新编写,返回值和形参都不能改变。即外壳不变,核心重写! 重载(overloading), 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。 参考:https://www.runoob.com/java/java-override-overload....

清风Python 396

Python函数重载和覆盖理论

  重载(overload)和覆盖(override),在C++,JavaC#等静态类型语言类型语言中,这两个概念同时存在。前者是为了让同一个函数名(方法名)匹配不同的参数(个数不同,类型不同);后者是为了实现多态,在相同名称的函数(方法)和参数,在不同的类中(父类,子类),有不同的实现。 Python是动态类型语言,不能简单地说它支持或者不支持重载,我的思考结果是,重载仍然存在,只是以不同...

sunny_happy08的博客 821

python中的类class: 继承、覆盖、重写、重载、扩展、多态、封装

python中的类class: 继承、覆盖、重写、重载、扩展、多态、封装

Toby的博客 3万+

python里的override(重写)

本文翻译自Let’s override 什么是override override字面理解是无效,消除的意思,在Python里两个同名的方法但执行不同程序,其中一个方法使得另外一个方法无效的,这就叫override(重写)。 通常情况下,父类中的方法,而子类中有同名方法,在执行该方法时,调用的是该方法对应的类。 值得一提的是,这里父类和子类在原文中是superclass(总纲)和subc...

banban008的博客 2万+

chatgpt赋能pythonPython重载吗?

函数重载是指定义多个同名函数,每一个都有不同的参数列表。调用函数时,会根据传递的参数类型、数量等信息,选择对应的函数执行。在一些编程语言中,如C++,函数重载是被支持的,可以根据参数不同执行不同的操作。然而,Python不支持函数重载,因为Python是一门动态类型语言。本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt能力的冰山一角。作为通用的Aigc大模型,只是展现它原本的实力。对于颠覆工作方式的ChatGPT。

xuhss_com的博客 314

有人说 Python 不支持函数重载

众所周知,Python 是动态语言,所谓动态语言,就是变量的类型是动态的,程序运行期间变量类型可以随意变化,由于 Python 的变量是没有固定类型的,而函数重载却依赖变量类型,重载就是定...

somenzz的博客 1048

为什么 Python 不支持函数重载

为了考虑为什么 python 不提供函数重载,首先我们要研究为什么需要提供函数重载函数重载主要是为了解决两个问题。1。可变参数类型。2。可变参数个数。另外,一个基本的设计原则是,仅仅当两个函数除了参数类型和参数个数不同以外,其功能是完全相同的,此时才使用函数重载,如果两个函数的功能其实不同,那么不应当使用重载,而应当使用一个名字不同的函数。好吧,那么对于情况 1 ,函数功能相同,但是参数类型不同...

weixin_30385925的博客 365

如何解决python自定义类的构造方法无法重载问题,并写入json中读取/输入

一、python类的构造方法怎样解决重载问题 首先,强调一下,python的类的构造方法,不能重载,不能重载,不能重载。 首先,强调一下,python的类的构造方法,不能重载,不能重载,不能重载。 首先,强调一下,python的类的构造方法,不能重载,不能重载,不能重载。 既然不能重载,那咋办?对于java与c++用惯了的人,这很为难。不过,python不能重载构造函数,那么我们就想办法让pyth...

良木 1374
上一篇: Microsoft Solution Framework 微软解决方案框架结构
下一篇: 批量更新上百台服务器
SysThink
博客等级 码龄17年 37粉丝 136原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值