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的列表中利用remove()方法删除元素的教程
May 21 Python
python实现稀疏矩阵示例代码
Jun 09 Python
详解Python 模拟实现生产者消费者模式的实例
Aug 10 Python
python3.6使用pymysql连接Mysql数据库
May 25 Python
Python爬虫使用脚本登录Github并查看信息
Jul 16 Python
Django之无名分组和有名分组的实现
Apr 16 Python
python语言基本语句用法总结
Jun 11 Python
在pyqt5中QLineEdit里面的内容回车发送的实例
Jun 21 Python
python绘制评估优化算法性能的测试函数
Jun 25 Python
Python的Lambda函数用法详解
Sep 03 Python
在django项目中导出数据到excel文件并实现下载的功能
Mar 13 Python
python 安全地删除列表元素的方法
Mar 16 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
收听短波不可能有声音清晰的品质吗
2021/03/01 无线电
PHP 和 XML: 使用expat函数(三)
2006/10/09 PHP
php下通过伪造http头破解防盗链的代码
2010/07/03 PHP
PHP的curl实现get,post和cookie(实例介绍)
2013/06/17 PHP
PHP中的日期加减方法示例
2014/08/21 PHP
JavaScript与HTML结合的基本使用方法整理
2015/10/12 PHP
Mac系统下安装PHP Xdebug
2018/03/30 PHP
PHP实现的猴王算法(猴子选大王)示例
2018/04/30 PHP
javascript显示隐藏层比较不错的方法分析
2008/09/30 Javascript
JavaScript模拟深蓝vs卡斯帕罗夫的国际象棋对局示例
2015/04/22 Javascript
简述AngularJS相关的一些编程思想
2015/06/23 Javascript
详解JavaScript函数
2015/12/01 Javascript
Node.js本地文件操作之文件拷贝与目录遍历的方法
2016/02/16 Javascript
基于RequireJS和JQuery的模块化编程日常问题解析
2016/04/14 Javascript
Bootstrap每天必学之弹出框(Popover)插件
2016/04/25 Javascript
input输入密码变黑点密文的实现方法
2017/01/09 Javascript
原生js编写2048小游戏
2017/03/17 Javascript
如何给ss bash 写一个 WEB 端查看流量的页面
2017/03/23 Javascript
React Native 使用Fetch发送网络请求的示例代码
2017/12/02 Javascript
利用原生JS实现data方法示例代码
2019/05/28 Javascript
electron 安装,调试,打包的具体使用
2019/11/06 Javascript
分析Python编程时利用wxPython来支持多线程的方法
2015/04/07 Python
python微信公众号之关键词自动回复
2018/06/15 Python
PyQT实现菜单中的复制,全选和清空的功能的方法
2019/06/17 Python
Python爬取视频(其实是一篇福利)过程解析
2019/08/01 Python
python 3.74 运行import numpy as np 报错lib\site-packages\numpy\__init__.py
2019/10/06 Python
用Python 爬取猫眼电影数据分析《无名之辈》
2020/07/24 Python
Python json解析库jsonpath原理及使用示例
2020/11/25 Python
Python中lru_cache的使用和实现详解
2021/01/25 Python
网友共享的几个面试题关于Java和Unix等方面的
2016/09/08 面试题
中国文明网签名寄语
2014/01/18 职场文书
节约用水演讲稿
2014/05/21 职场文书
小班上学期个人总结
2015/02/12 职场文书
美术教师求职信范文
2015/03/20 职场文书
爱心捐书倡议书
2015/04/27 职场文书
宝塔更新Python及Flask项目的部署
2022/04/11 Python