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 相关文章推荐
linux系统使用python监测系统负载脚本分享
Jan 15 Python
Python collections模块实例讲解
Apr 07 Python
python中使用enumerate函数遍历元素实例
Jun 16 Python
python实现上传样本到virustotal并查询扫描信息的方法
Oct 05 Python
浅谈python中的getattr函数 hasattr函数
Jun 14 Python
K-means聚类算法介绍与利用python实现的代码示例
Nov 13 Python
Python+matplotlib实现计算两个信号的交叉谱密度实例
Jan 08 Python
python对html过滤处理的方法
Oct 21 Python
Python+PyQT5的子线程更新UI界面的实例
Jun 14 Python
pytorch中的embedding词向量的使用方法
Aug 18 Python
django实现用户注册实例讲解
Oct 30 Python
MxNet预训练模型到Pytorch模型的转换方式
May 25 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 无法加载mcrypt.dll的解决办法
2013/04/03 PHP
php缓存技术详细总结
2013/08/07 PHP
PHP错误机制知识汇总
2016/03/24 PHP
由php中字符offset特征造成的绕过漏洞详解
2017/07/07 PHP
PHP实现腾讯与百度坐标转换
2017/08/05 PHP
利用PHP获取汉字首字母并且分组排序详解
2017/10/22 PHP
在 Laravel 项目中使用 webpack-encore的方法
2019/07/21 PHP
网页自动跳转代码收集
2009/09/27 Javascript
Aptana调试javascript图解教程
2009/11/30 Javascript
jquery上传插件fineuploader上传文件使用方法(jquery图片上传插件)
2013/12/05 Javascript
jquery单击事件和双击事件冲突解决方案
2016/03/02 Javascript
javascript检测移动设备横竖屏
2016/05/21 Javascript
防止Node.js中错误导致进程阻塞的办法
2016/08/11 Javascript
jQuery简单创建节点的方法
2016/09/09 Javascript
简单谈谈JS数组中的indexOf方法
2016/10/13 Javascript
JS树形菜单组件Bootstrap TreeView使用方法详解
2016/12/21 Javascript
windows下vue-cli及webpack搭建安装环境
2017/04/25 Javascript
JavaScript数组去重的多种方法(四种)
2017/09/19 Javascript
Vue props 单向数据流的实现
2018/11/06 Javascript
vue组件之间通信方式实例总结【8种方式】
2019/02/22 Javascript
深入学习TypeScript 、React、 Redux和Ant-Design的最佳实践
2019/06/17 Javascript
原生js代码能实现call和bind吗
2019/07/31 Javascript
python操作MySQL数据库的方法分享
2012/05/29 Python
Python正则抓取新闻标题和链接的方法示例
2017/04/24 Python
Python爬虫实现获取动态gif格式搞笑图片的方法示例
2018/12/24 Python
python 实现在一张图中绘制一个小的子图方法
2019/07/07 Python
美国一家专业的太阳镜网上零售商:Solstice太阳镜
2016/07/25 全球购物
英国男士时尚网站:Dandy Fellow
2018/02/09 全球购物
办公室文秘岗位职责
2013/11/15 职场文书
乡镇保密工作责任书
2014/07/28 职场文书
2014年营业员工作总结
2014/11/18 职场文书
2014幼儿教师个人工作总结
2014/12/03 职场文书
学习师德师风的心得体会(2篇)
2019/10/08 职场文书
pytorch 实现变分自动编码器的操作
2021/05/24 Python
python单元测试之pytest的使用
2021/06/07 Python
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
2022/08/05 Vue.js