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深入学习之对象的属性
Aug 31 Python
Python内置函数——__import__ 的使用方法
Nov 24 Python
python实现简易通讯录修改版
Mar 13 Python
详解Python3.6的py文件打包生成exe
Jul 13 Python
Python 打印中文字符的三种方法
Aug 14 Python
Python基于mysql实现学生管理系统
Feb 21 Python
Python中使用双下划线防止类属性被覆盖问题
Jun 27 Python
Python matplotlib画曲线例题解析
Feb 07 Python
python json load json 数据后出现乱序的解决方案
Feb 27 Python
Python基于yaml文件配置logging日志过程解析
Jun 23 Python
简单了解Django项目应用创建过程
Jul 06 Python
Python如何将模块打包并发布
Aug 30 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+APACHE实现用户论证的方法
2006/10/09 PHP
浅谈PHP中关于foreach使用引用变量的坑
2016/11/14 PHP
解析javascript系统错误:-1072896658的解决办法
2013/07/08 Javascript
JavaScript函数详解
2014/11/17 Javascript
jQuery中empty()方法用法实例
2015/01/16 Javascript
JavaScript中的Repaint和Reflow用法详解
2015/07/27 Javascript
jQuery实现ajax调用WCF服务的方法(附带demo下载)
2015/12/04 Javascript
在IE8上JS实现combobox支持拼音检索功能
2016/05/23 Javascript
新入门node.js必须要知道的概念(必看篇)
2016/08/10 Javascript
jquery移除了live()、die(),新版事件绑定on()、off()的方法
2016/10/26 Javascript
基于Phantomjs生成PDF的实现方法
2016/11/07 Javascript
jQuery实现别踩白块儿网页版小游戏
2017/01/18 Javascript
javascript设计模式之策略模式学习笔记
2017/02/15 Javascript
vue.js 使用v-if v-else发现没有执行解决办法
2017/05/15 Javascript
详解jquery选择器的原理
2017/08/01 jQuery
jfinal与bootstrap的登出实战详解
2017/11/27 Javascript
AngularJS基于http请求实现下载php生成的excel文件功能示例
2018/01/23 Javascript
SpringBoot在yml配置文件中配置druid的操作
2020/11/16 Javascript
[57:37]EG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
bluepy 一款python封装的BLE利器简单介绍
2019/06/25 Python
如何使用Python实现斐波那契数列
2019/07/02 Python
pytorch GAN生成对抗网络实例
2020/01/10 Python
CSS3实现闪烁动画效果的方法
2015/02/09 HTML / CSS
微信小程序之html5 canvas绘图并保存到系统相册
2019/06/20 HTML / CSS
中国首家奢侈品O2O网购平台:第五大道奢侈品网
2017/12/14 全球购物
ebookers英国:隶属全球最大的在线旅游公司Expedia
2017/12/28 全球购物
马德里著名的运动鞋商店:NOIRFONCE
2019/04/12 全球购物
美国折扣香水网站:The Perfume Spot
2020/12/12 全球购物
物业管理专业个人的自我评价
2013/11/19 职场文书
人力资源主管的岗位职责
2014/03/15 职场文书
工业自动化专业自荐信范文
2014/04/10 职场文书
国旗下讲话演讲稿
2014/05/08 职场文书
入职担保书范文
2014/05/21 职场文书
2015年度校学生会工作总结报告
2015/05/23 职场文书
工作转正自我鉴定范文
2019/06/21 职场文书
苹果macOS 13开发者预览版Beta 8发布 正式版10月发布
2022/09/23 数码科技