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实现端口复用实例代码
Jul 03 Python
浅谈Python中copy()方法的使用
May 21 Python
Python从MP3文件获取id3的方法
Jun 15 Python
python实现拓扑排序的基本教程
Mar 11 Python
python定向爬虫校园论坛帖子信息
Jul 23 Python
python 剪切移动文件的实现代码
Aug 02 Python
Python对象中__del__方法起作用的条件详解
Nov 01 Python
Python 从一个文件中调用另一个文件的类方法
Jan 10 Python
Python实现插入排序和选择排序的方法
May 12 Python
python 如何去除字符串头尾的多余符号
Nov 19 Python
解决启动django,浏览器显示“服务器拒绝访问”的问题
May 13 Python
Python eval函数介绍及用法
Nov 09 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
mysql_fetch_assoc和mysql_fetch_row的功能加起来就是mysql_fetch_array
2007/01/15 PHP
php chr() ord()中文截取乱码问题解决方法
2008/09/08 PHP
php 自写函数代码 获取关键字 去超链接
2010/02/08 PHP
使用php批量删除数据库下所有前缀为prefix_的表
2014/06/09 PHP
php动态添加url查询参数的方法
2015/04/14 PHP
Javascript Jquery 遍历Json的实现代码
2010/03/31 Javascript
jQuery插件开发全解析
2012/10/10 Javascript
Nodejs极简入门教程(一):模块机制
2014/10/25 NodeJs
jQuery中判断对象是否存在的方法汇总
2016/02/24 Javascript
NodeJS和BootStrap分页效果的实现代码
2016/11/07 NodeJs
angularjs下拉框空白的解决办法
2017/06/20 Javascript
详解Node.js一行命令上传本地文件到服务器
2019/04/22 Javascript
基于vue+axios+lrz.js微信端图片压缩上传方法
2019/06/25 Javascript
ES6如何用一句代码实现函数的柯里化
2020/01/18 Javascript
[31:47]夜魇凡尔赛茶话会 第三期01:选手知多少
2021/03/11 DOTA
python多线程编程方式分析示例详解
2013/12/06 Python
python检查字符串是否是正确ISBN的方法
2015/07/11 Python
python获取磁盘号下盘符步骤详解
2019/06/19 Python
Python 数据可视化pyecharts的使用详解
2019/06/26 Python
Python 装饰器原理、定义与用法详解
2019/12/07 Python
python Manager 之dict KeyError问题的解决
2019/12/21 Python
CSS3实现文字波浪线效果示例代码
2016/11/20 HTML / CSS
台湾森森购物网:U-mall
2017/10/16 全球购物
运动服饰每月订阅盒:Ellie
2018/04/29 全球购物
周仰杰(JIMMY CHOO)英国官方网站:闻名世界的鞋子品牌
2018/10/28 全球购物
合同专员岗位职责
2013/12/18 职场文书
农场厂长岗位职责
2013/12/28 职场文书
采购部主管岗位职责
2014/01/01 职场文书
大班开学家长寄语
2014/04/04 职场文书
抽样调查项目计划书
2014/04/24 职场文书
2014年国庆标语
2014/06/30 职场文书
小学美术兴趣小组活动总结
2014/07/07 职场文书
家具公司总经理岗位职责
2014/07/08 职场文书
暑假社会实践心得体会
2014/09/02 职场文书
七年级数学教学反思
2016/02/17 职场文书
想创业成功,需要掌握这些要点
2019/12/06 职场文书