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求pi的方法
Oct 08 Python
Python中实现常量(Const)功能
Jan 28 Python
Python中关于使用模块的基础知识
May 24 Python
Python实现的最近最少使用算法
Jul 10 Python
python 实现在txt指定行追加文本的方法
Apr 29 Python
python 获取字符串MD5值方法
May 29 Python
利用python-pypcap抓取带VLAN标签的数据包方法
Jul 23 Python
Django分页功能的实现代码详解
Jul 29 Python
Python 3 判断2个字典相同
Aug 06 Python
python批量解压zip文件的方法
Aug 20 Python
在 Jupyter 中重新导入特定的 Python 文件(场景分析)
Oct 27 Python
Django实现列表页商品数据返回教程
Apr 03 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
PHP连接SQLServer2005的方法
2015/01/27 PHP
PHP+Redis链表解决高并发下商品超卖问题(实现原理及步骤)
2020/08/03 PHP
JS日历 推荐
2006/12/03 Javascript
javascript xml为数据源的下拉框控件
2009/07/07 Javascript
JavaScript 构造函数 面相对象学习必备知识
2010/06/09 Javascript
Firefox中autocomplete="off" 设置不起作用Bug的解决方法
2011/03/25 Javascript
一个js导致的jquery失效问题的解决方法
2013/11/27 Javascript
移动适配的几种方案(三种方案)
2016/11/25 Javascript
Bootstrap表格制作代码
2017/03/17 Javascript
Javascript创建类和对象详解
2017/05/31 Javascript
AngularJS遍历获取数组元素的方法示例
2017/11/11 Javascript
Vue-cli-webpack搭建斗鱼直播步骤详解
2017/11/17 Javascript
微信小程序实现循环动画效果
2018/07/16 Javascript
基于vue实现一个神奇的动态按钮效果
2019/05/15 Javascript
使用JQuery自动完成插件Auto Complete详解
2019/06/18 jQuery
nodejs一个简单的文件服务器的创建方法
2019/09/13 NodeJs
鸿蒙系统中的 JS 开发框架
2020/09/18 Javascript
Python(Tornado)模拟登录小米抢手机
2013/11/12 Python
python re正则表达式模块(Regular Expression)
2014/07/16 Python
python网络编程之文件下载实例分析
2015/05/20 Python
python+selenium+autoit实现文件上传功能
2017/08/23 Python
基于循环神经网络(RNN)实现影评情感分类
2018/03/26 Python
python requests post多层字典的方法
2018/12/27 Python
python实现支付宝转账接口
2019/05/07 Python
学Python 3的理由和必要性
2019/11/19 Python
从pandas一个单元格的字符串中提取字符串方式
2019/12/17 Python
美国网上鞋子零售商:Dr. Scholl’s Shoes
2017/11/17 全球购物
Yahoo-PHP面试题4
2012/05/05 面试题
查询优化的一般准则有哪些
2015/03/08 面试题
高中毕业生登记表自我鉴定范文
2014/03/18 职场文书
养生餐厅创业计划书范文
2014/03/26 职场文书
组工干部对照检查材料
2014/08/25 职场文书
党的群众路线教育实践活动党员个人剖析材料
2014/10/08 职场文书
CSS3 制作的彩虹按钮样式
2021/04/11 HTML / CSS
编写python程序的90条建议
2021/04/14 Python
简单且有用的Python数据分析和机器学习代码
2021/07/02 Python