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线程池的实现实例
Nov 18 Python
Python greenlet实现原理和使用示例
Sep 24 Python
Python爬虫爬验证码实现功能详解
Apr 14 Python
python模拟登录并且保持cookie的方法详解
Apr 04 Python
Python中关于Sequence切片的下标问题详解
Jun 15 Python
python中计算一个列表中连续相同的元素个数方法
Jun 29 Python
修改python plot折线图的坐标轴刻度方法
Dec 13 Python
Python从文件中读取数据的方法讲解
Feb 14 Python
python3.6+selenium实现操作Frame中的页面元素
Jul 16 Python
pytorch 自定义数据集加载方法
Aug 18 Python
Python PyInstaller库基本使用方法分析
Dec 12 Python
Python+Tkinter制作专属图形化界面
Apr 01 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 include_path设置技巧分享
2011/07/03 PHP
PHP导出MySQL数据到Excel文件(fputcsv)
2011/07/03 PHP
深入理解:XML与对象的序列化与反序列化
2013/06/08 PHP
javascript 写类方式之一
2009/07/05 Javascript
JS拖动技术 关于setCapture使用
2010/12/09 Javascript
javascript学习笔记(十四) window对象使用介绍
2012/06/20 Javascript
JavaScript高级程序设计(第3版)学习笔记6 初识js对象
2012/10/11 Javascript
jQuery中:button选择器用法实例
2015/01/04 Javascript
Jquery动态添加输入框的方法
2015/05/29 Javascript
理解Javascript文件动态加载
2016/01/29 Javascript
Bootstrap布局组件应用实例讲解
2016/02/17 Javascript
JavaScript与jQuery实现的闪烁输入效果
2016/02/18 Javascript
jquery 判断div show的状态实例
2016/12/03 Javascript
vue如何获取点击事件源的方法
2017/08/10 Javascript
javascript自定义事件功能与用法实例分析
2017/11/08 Javascript
详解js正则表达式验证时间格式xxxx-xx-xx形式
2018/02/09 Javascript
基于vue+axios+lrz.js微信端图片压缩上传方法
2019/06/25 Javascript
Angular8 简单表单验证的实现示例
2020/06/03 Javascript
详解python中的文件与目录操作
2017/07/11 Python
深入浅出学习python装饰器
2017/09/29 Python
Python面向对象编程基础解析(二)
2017/10/26 Python
python登录并爬取淘宝信息代码示例
2017/12/09 Python
Python实现判断字符串中包含某个字符的判断函数示例
2018/01/08 Python
Python学习笔记之迭代器和生成器用法实例详解
2019/08/08 Python
利用python实现凯撒密码加解密功能
2020/03/31 Python
Python-jenkins 获取job构建信息方式
2020/05/12 Python
Python使用urlretrieve实现直接远程下载图片的示例代码
2020/08/17 Python
python基于exchange函数发送邮件过程详解
2020/11/06 Python
使用django自带的user做外键的方法
2020/11/30 Python
html5教程画矩形代码分享
2013/12/04 HTML / CSS
策划总监岗位职责
2014/02/16 职场文书
新手上路标语
2014/06/20 职场文书
民事调解协议书
2016/03/21 职场文书
Python中常见的导入方式总结
2021/05/06 Python
详解Redis复制原理
2021/06/04 Redis
关于HTML编码导致的乱码问题
2021/09/04 HTML / CSS