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实现下载整个ftp目录的方法
Jan 17 Python
Python实现 多进程导入CSV数据到 MySQL
Feb 26 Python
详解python之多进程和进程池(Processing库)
Jun 09 Python
python操作excel的方法(xlsxwriter包的使用)
Jun 11 Python
Python中的heapq模块源码详析
Jan 08 Python
python画双y轴图像的示例代码
Jul 07 Python
Python2与Python3的区别详解
Feb 09 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
Feb 23 Python
python3 sorted 如何实现自定义排序标准
Mar 12 Python
Keras中 ImageDataGenerator函数的参数用法
Jul 03 Python
python 实现超级玛丽游戏
Nov 25 Python
python 常用的异步框架汇总整理
Jun 18 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
图书管理程序(三)
2006/10/09 PHP
发款php蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
PHP中读写文件实现代码
2011/10/20 PHP
PHP新建类问题分析及解决思路
2015/11/19 PHP
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
2016/02/15 PHP
PHP7.1方括号数组符号多值复制及指定键值赋值用法分析
2016/09/26 PHP
Laravel Eloquent ORM 实现查询表中指定的字段
2019/10/17 PHP
用jquery实现学校的校历(asp.net+jquery ui 1.72)
2010/01/01 Javascript
Jquery CheckBox全选方法代码附js checkbox全选反选代码
2010/06/09 Javascript
javascript闭包的理解和实例
2010/08/12 Javascript
javascript闭包的高级使用方法实例
2013/07/04 Javascript
JSuggest自动匹配下拉框使用方法(示例代码)
2013/12/27 Javascript
js加密解密字符串可自定义密码因子
2014/05/13 Javascript
jquery对象和javascript对象即DOM对象相互转换
2014/08/07 Javascript
采用自执行的匿名函数解决for循环使用闭包的问题
2014/09/11 Javascript
JavaScript仿静态分页实现方法
2015/08/04 Javascript
深入理解Angularjs向指令传递数据双向绑定机制
2016/12/31 Javascript
vue2 如何实现div contenteditable=“true”(类似于v-model)的效果
2017/02/08 Javascript
JavaScript 自定义事件之我见
2017/09/25 Javascript
实战node静态文件服务器的示例代码
2018/03/08 Javascript
Vue-Quill-Editor富文本编辑器的使用教程
2018/09/21 Javascript
vue、react等单页面项目部署到服务器的方法及vue和react的区别
2018/09/29 Javascript
es6 filter() 数组过滤方法总结
2019/04/03 Javascript
vue路由传参页面刷新参数丢失问题解决方案
2019/10/08 Javascript
[49:28]VP vs Optic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python使用urllib模块和pyquery实现阿里巴巴排名查询
2014/01/16 Python
Python网站验证码识别
2016/01/25 Python
Python多进程multiprocessing.Pool类详解
2018/04/27 Python
python爱心表白 每天都是浪漫七夕!
2018/08/18 Python
Win10环境python3.7安装dlib模块趟过的坑
2019/08/01 Python
Python使用微信接入图灵机器人过程解析
2019/11/04 Python
Python函数式编程实例详解
2020/01/17 Python
TensorFlow tf.nn.softmax_cross_entropy_with_logits的用法
2020/04/19 Python
请描述一下”is a”关系和”has a”关系
2015/02/03 面试题
党员发展大会主持词
2015/07/03 职场文书
Vue2.0搭建脚手架
2022/03/13 Vue.js