python中有函数重载吗


Posted in Python onMay 28, 2020

python中没有函数重载

为了考虑为什么python不提供函数重载,首先我们要研究为什么需要提供函数重载。

函数重载主要是为了解决两个问题:

可变参数类型。

可变参数个数。

另外,一个基本的设计原则是,仅仅当两个函数除了参数类型和参数个数不同以外,其功能是完全相同的,此时才使用函数重载,如果两个函数的功能其实不同,那么不应当使用重载,而应当使用一个名字不同的函数。

那么对于情况 1 ,函数功能相同,但是参数类型不同,python 如何处理?

答案是根本不需要处理,因为 python 可以接受任何类型的参数,如果函数的功能相同,那么不同的参数类型在 python 中很可能是相同的代码,没有必要做成两个不同函数。

那么对于情况 2 ,函数功能相同,但参数个数不同,python 如何处理?

答案就是缺省参数。对那些缺少的参数设定为缺省参数即可解决问题。因为你假设函数功能相同,那么那些缺少的参数终归是需要用的。好了,鉴于情况 1 跟 情况 2 都有了解决方案,python 自然就不需要函数重载了。

知识点补充:

假设你有一个函数connect,它有一个参数address,这个参数可能是一个字符串,也可能是一个元组。例如:

connect('123.45.32.18:8080')
connect(('123.45.32.18', 8080))

你想在代码里面兼容这两种写法,于是你可能会这样写代码:

def connect(address):
 if isinstance(address, str):
 ip, port = address.split(':')
 elif isinstance(address, tuple):
 ip, port = address
 else:
 print('地址格式不正确')

到此这篇关于python中有函数重载吗的文章就介绍到这了,更多相关python函数重载详解内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python 自动补全(vim)
Nov 30 Python
Python的for和break循环结构中使用else语句的技巧
May 24 Python
pandas 小数位数 精度的处理方法
Jun 09 Python
python框架中flask知识点总结
Aug 17 Python
Python基于Opencv来快速实现人脸识别过程详解(完整版)
Jul 11 Python
Django模板标签中url使用详解(url跳转到指定页面)
Mar 19 Python
python 已知平行四边形三个点,求第四个点的案例
Apr 12 Python
Python+PyQt5+MySQL实现天气管理系统
Jun 16 Python
PyCharm配置anaconda环境的步骤详解
Jul 31 Python
python raise的基本使用
Sep 10 Python
使用py-spy解决scrapy卡死的问题方法
Sep 29 Python
python中sys模块的介绍与实例
Apr 17 Python
Python可以实现栈的结构吗
May 27 #Python
Python如何脚本过滤文件中的注释
May 27 #Python
Python如何获取文件指定行的内容
May 27 #Python
Python web如何在IIS发布应用过程解析
May 27 #Python
利用Python实现某OA系统的自动定位功能
May 27 #Python
Python中常见的数制转换有哪些
May 27 #Python
Python如何实现邮件功能
May 27 #Python
You might like
Codeigniter的一些优秀特性总结
2015/01/21 PHP
php获取远程文件的内容和大小
2015/11/03 PHP
功能强大的php文件上传类
2016/08/29 PHP
CI框架入门之MVC简单示例
2016/11/21 PHP
JS图像无缝滚动脚本非常好用
2014/02/10 Javascript
js中window.open打开一个新的页面
2014/08/10 Javascript
JavaScript中的函数模式详解
2015/02/11 Javascript
jQuery使用fadein方法实现渐出效果实例
2015/03/27 Javascript
JQuery给网页更换皮肤的方法
2015/05/30 Javascript
基于OL2实现百度地图ABCD marker的效果
2015/10/01 Javascript
最棒的Angular2表格控件
2016/08/10 Javascript
JavaScript实现的冒泡排序法及统计相邻数交换次数示例
2017/04/26 Javascript
js实现canvas保存图片为png格式并下载到本地的方法
2017/08/31 Javascript
EasyUI Tree树组件无限循环的解决方法
2017/09/27 Javascript
js推箱子小游戏步骤代码解析
2018/01/10 Javascript
vue中如何动态绑定图片,vue中通过data返回图片路径的方法
2018/02/07 Javascript
解决vue中监听input只能输入数字及英文或者其他情况的问题
2018/08/30 Javascript
Threejs实现滴滴官网首页地球动画功能
2020/07/13 Javascript
JS如何调用WebAssembly编译出来的.wasm文件
2020/11/05 Javascript
mapboxgl实现带箭头轨迹线的代码
2021/01/04 Javascript
[02:43]2014DOTA2国际邀请赛 官方Alliance战队纪录片
2014/07/14 DOTA
Python OS模块常用函数说明
2015/05/23 Python
老生常谈Python进阶之装饰器
2017/05/11 Python
python 读取excel文件生成sql文件实例详解
2017/05/12 Python
浅谈Python NLP入门教程
2017/12/25 Python
Python实现的redis分布式锁功能示例
2018/05/29 Python
python登录WeChat 实现自动回复实例详解
2019/05/28 Python
Python线程threading模块用法详解
2020/02/26 Python
python GUI库图形界面开发之PyQt5选项卡控件QTabWidget详细使用方法与实例
2020/03/01 Python
python GUI模拟实现计算器
2020/06/22 Python
纯CSS3实现给头像加个光芒四射且旋转的背景动画效果
2014/05/07 HTML / CSS
智能家居、吸尘器、滑板车、电动自行车网上购物:Geekmaxi
2021/01/18 全球购物
什么情况下你必须要把一个类定义为abstract的
2013/01/06 面试题
电气自动化自荐信
2013/10/10 职场文书
HTML页面滚动时部分内容位置固定不滚动的实现
2021/04/14 HTML / CSS
Java字符缓冲流BufferedWriter
2022/04/09 Java/Android