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显示天气预报
Mar 02 Python
在Python中处理日期和时间的基本知识点整理汇总
May 22 Python
深入浅析python继承问题
May 29 Python
python实现kNN算法
Dec 20 Python
python 获取当天凌晨零点的时间戳方法
May 22 Python
Python拼接字符串的7种方法总结
Nov 01 Python
如何基于Python批量下载音乐
Nov 11 Python
通过实例学习Python Excel操作
Jan 06 Python
Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
May 11 Python
python GUI模拟实现计算器
Jun 22 Python
Python下使用Trackbar实现绘图板
Oct 27 Python
python实现发送邮件
Mar 02 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
Oracle 常见问题解答
2006/10/09 PHP
简单实现限定phpmyadmin访问ip的方法
2013/03/05 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
2017/09/17 PHP
laravel-admin的图片删除实例
2019/09/30 PHP
服务端 VBScript 与 JScript 几个相同特性的写法 By shawl.qiu
2007/03/06 Javascript
flash javascript之间的通讯方法小结
2008/12/20 Javascript
11款基于Javascript的文件管理器
2009/10/25 Javascript
JQuery中模拟image的ajaxPrefilter与ajaxTransport处理
2015/06/19 Javascript
AngularJS入门教程之AngularJS指令
2016/04/18 Javascript
Active控件问题小结(附解决办法)
2016/06/09 Javascript
浅谈jQuery中的checkbox问题
2016/08/10 Javascript
jquery 正整数数字校验正则表达式
2017/01/10 Javascript
bootstrap折叠调用collapse()后data-parent不生效的快速解决办法
2017/02/23 Javascript
gulp解决跨域的配置文件问题
2017/06/08 Javascript
React组件内事件传参实现tab切换的示例代码
2018/07/04 Javascript
微信小程序项目实践之验证码倒计时功能
2018/07/18 Javascript
JavaScript引用类型Object常见用法实例分析
2018/08/08 Javascript
webstorm+vue初始化项目的方法
2018/10/18 Javascript
jQuery分组选择器简单用法示例
2019/04/04 jQuery
js实现录音上传功能
2019/11/22 Javascript
[02:32]DOTA2英雄基础教程 祸乱之源
2013/12/23 DOTA
python学习之编写查询ip程序
2016/02/27 Python
python3利用smtplib通过qq邮箱发送邮件方法示例
2017/12/03 Python
django manage.py扩展自定义命令方法
2018/05/27 Python
django利用request id便于定位及给日志加上request_id
2018/08/26 Python
Python函数返回不定数量的值方法
2019/01/22 Python
python3中确保枚举值代码分析
2020/12/02 Python
Python 实现集合Set的示例
2020/12/21 Python
新西兰最大的在线设计师眼镜店:SmartBuyGlasses新西兰
2017/10/20 全球购物
北京泡泡网网络有限公司.net面试题
2012/07/17 面试题
.NET里面什么时候需要调用垃圾回收
2015/06/01 面试题
优秀本科毕业生自荐信
2014/07/04 职场文书
2014年司机工作总结
2014/11/21 职场文书
2015年体育教学工作总结
2015/05/20 职场文书
刑事附带民事代理词
2015/05/25 职场文书
预备党员入党感想
2015/08/10 职场文书