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 相关文章推荐
利用pandas读取中文数据集的方法
Jul 25 Python
Python中实例化class的执行顺序示例详解
Oct 14 Python
对Pandas MultiIndex(多重索引)详解
Nov 16 Python
pymongo中聚合查询的使用方法
Mar 22 Python
Python使用type关键字创建类步骤详解
Jul 23 Python
使用Windows批处理和WMI设置Python的环境变量方法
Aug 14 Python
Django如何使用redis作为缓存
May 21 Python
解决Python 函数声明先后顺序出现的问题
Sep 02 Python
通过代码实例了解Python3编程技巧
Oct 13 Python
解决python3.6用cx_Oracle库连接Oracle的问题
Dec 07 Python
Python爬虫模拟登陆哔哩哔哩(bilibili)并突破点选验证码功能
Dec 21 Python
python生成随机数、随机字符、随机字符串
Apr 06 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 各种排序算法实现代码
2009/08/20 PHP
用PHP实现的四则运算表达式计算实现代码
2011/08/02 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
php如何利用pecl安装mongodb扩展详解
2019/01/09 PHP
使用时间戳解决ie缓存的问题
2014/08/20 Javascript
jquery插件NProgress.js制作网页加载进度条
2015/06/05 Javascript
即将发布的jQuery 3 有哪些新特性
2016/04/14 Javascript
全面解析Bootstrap中scrollspy(滚动监听)的使用方法
2016/06/06 Javascript
DIV+CSS+jQ实现省市联动可扩展
2016/06/22 Javascript
jQuery.ajax实现根据不同的Content-Type做出不同的响应
2016/11/03 Javascript
Javascript使用uploadify来实现多文件上传
2016/11/16 Javascript
浅谈Webpack自动化构建实践指南
2017/12/18 Javascript
vue实现样式之间的切换及vue动态样式的实现方法
2017/12/19 Javascript
VUE项目中加载已保存的笔记实例方法
2019/09/14 Javascript
vue实现在v-html的html字符串中绑定事件
2019/10/28 Javascript
vue input标签通用指令校验的实现
2019/11/05 Javascript
[54:30]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
浅谈Python的Django框架中的缓存控制
2015/07/24 Python
玩转python爬虫之正则表达式
2016/02/17 Python
详解Python 数据库 (sqlite3)应用
2016/12/07 Python
python简单验证码识别的实现方法
2019/05/10 Python
Python绘图之二维图与三维图详解
2020/08/04 Python
使用CSS3来制作消息提醒框
2015/07/12 HTML / CSS
基于第一个PhoneGap(cordova)的应用详解
2013/05/03 HTML / CSS
处理HTML5新标签的浏览器兼容版问题
2017/03/13 HTML / CSS
英国的知名精品百货公司:House of Fraser(福来德)
2016/08/14 全球购物
美国电视购物:QVC
2017/02/06 全球购物
美国名牌太阳镜折扣网站:Eyedictive
2017/05/15 全球购物
日本民宿预约平台:STAY JAPAN
2017/07/01 全球购物
计算机专业自我鉴定
2013/10/15 职场文书
双语教学实施方案
2014/03/23 职场文书
纠纷协议书
2014/04/16 职场文书
故意伤害人身损害赔偿协议书
2014/11/19 职场文书
邹越演讲观后感
2015/06/15 职场文书
2019年让高校“心动”的自荐信
2019/03/25 职场文书
解决IIS7下无法绑定https主机的问题
2022/04/29 Servers