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中处理异常的教程
May 24 Python
Python实现新浪博客备份的方法
Apr 27 Python
python list排序的两种方法及实例讲解
Mar 20 Python
Django 如何获取前端发送的头文件详解(推荐)
Aug 15 Python
python的常用模块之collections模块详解
Dec 06 Python
python中如何使用分步式进程计算详解
Mar 22 Python
Python项目 基于Scapy实现SYN泛洪攻击的方法
Jul 23 Python
Window10下python3.7 安装与卸载教程图解
Sep 30 Python
Pycharm最新激活码2019(推荐)
Dec 31 Python
pandas的resample重采样的使用
Apr 24 Python
pycharm使用技巧之自动调整代码格式总结
Nov 04 Python
Python数据分析之pandas函数详解
Apr 21 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
苏联队长,苏联超人蝙蝠侠,这些登场的“山寨”英雄真的很严肃
2020/04/09 欧美动漫
增加反向链接的101个方法 站长推荐
2007/01/31 PHP
PHP删除HTMl标签的三种解决方法
2013/06/30 PHP
PHP输入流php://input实例讲解
2015/12/22 PHP
jquery 表格分页等操作实现代码(pagedown,pageup)
2010/04/11 Javascript
jQuery 遍历-nextUntil()方法以及prevUntil()方法的使用介绍
2013/04/26 Javascript
jQuery中[attribute^=value]选择器用法实例
2014/12/31 Javascript
javascript异步处理工作机制详解
2015/04/13 Javascript
javascript实现一个数值加法函数
2015/06/26 Javascript
学习JavaScript设计模式之中介者模式
2016/01/14 Javascript
jQuery实时显示鼠标指针位置和键盘ASCII码
2016/03/28 Javascript
jQuery解析返回的xml和json方法详解
2017/01/05 Javascript
VueJS如何引入css或者less文件的一些坑
2017/04/25 Javascript
vue.js实现价格格式化的方法
2017/05/23 Javascript
原生JavaScript实现精美的淘宝轮播图效果示例【附demo源码下载】
2017/05/27 Javascript
浅谈Angular HttpClient简单入门
2018/05/04 Javascript
element-ui tooltip修改背景颜色和箭头颜色的实现
2019/12/16 Javascript
python 获取et和excel的版本号
2009/04/09 Python
python使用点操作符访问字典(dict)数据的方法
2015/03/16 Python
Django添加favicon.ico图标的示例代码
2018/08/07 Python
pycham查看程序执行的时间方法
2018/11/29 Python
python面试题Python2.x和Python3.x的区别
2019/05/28 Python
python卸载后再次安装遇到的问题解决
2019/07/10 Python
Python使用pyyaml模块处理yaml数据
2020/04/14 Python
Python实现一个简单的递归下降分析器
2020/08/01 Python
一文详述 Python 中的 property 语法
2020/09/01 Python
Python常用外部指令执行代码实例
2020/11/05 Python
Molly Bracken法国电子商店:法国女性时尚品牌
2019/07/24 全球购物
C#基础面试题
2016/10/17 面试题
外科实习自我鉴定
2013/10/06 职场文书
安卓程序员求职信
2014/02/28 职场文书
社团活动总结范文
2014/04/26 职场文书
个人查摆剖析材料
2014/10/04 职场文书
事业单位考察材料范文
2014/12/25 职场文书
python删除csv文件的行列
2021/04/06 Python
JS Object构造函数之Object.freeze
2021/04/28 Javascript