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基于pygame实现的弹力球效果(附源码)
Nov 11 Python
python中zip()方法应用实例分析
Apr 16 Python
Python实现将一个正整数分解质因数的方法分析
Dec 14 Python
浅谈Python实现Apriori算法介绍
Dec 20 Python
使用python编写简单的小程序编译成exe跑在win10上
Jan 15 Python
python批量下载网站马拉松照片的完整步骤
Dec 05 Python
django的settings中设置中文支持的实现
Apr 28 Python
由面试题加深对Django的认识理解
Jul 19 Python
python飞机大战pygame碰撞检测实现方法分析
Dec 17 Python
PyCharm汉化安装及永久激活详细教程(靠谱)
Jan 16 Python
Python编写万花尺图案实例
Jan 03 Python
利用Selenium添加cookie实现自动登录的示例代码(fofa)
May 08 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 开发环境配置(Zend Studio)
2010/04/28 PHP
PHP下通过file_get_contents的代理使用方法
2011/02/16 PHP
mac系统下为 php 添加 pcntl 扩展
2016/08/28 PHP
利用PHP生成CSV文件简单示例
2016/12/21 PHP
PHP编程获取各个时间段具体时间的方法
2017/05/26 PHP
JavaScript中令你抓狂的魔术变量
2006/11/30 Javascript
用javascript实现读取txt文档的脚本
2007/07/20 Javascript
JS类定义原型方法的两种实现的区别评论很多
2007/09/12 Javascript
JQuery 学习笔记 选择器之四
2009/07/23 Javascript
js给selected添加options的方法
2015/05/06 Javascript
bootstrap 下拉多选框进行多选传值问题代码分析
2017/02/14 Javascript
微信小程序使用checkbox显示多项选择框功能【附源码下载】
2017/12/11 Javascript
微信小程序实现的一键连接wifi功能示例
2019/04/24 Javascript
[02:52]DOTA2新手基础教程 米波
2014/01/21 DOTA
[01:33]PWL开团时刻DAY2-开雾与反开雾
2020/10/31 DOTA
Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法
2015/04/24 Python
Python外星人入侵游戏编程完整版
2020/03/30 Python
python实现Adapter模式实例代码
2018/02/09 Python
python去除扩展名的实例讲解
2018/04/23 Python
Linux下python与C++使用dlib实现人脸检测
2018/06/29 Python
Python面向对象程序设计多继承和多态用法示例
2019/04/08 Python
利用OpenCV中对图像数据进行64F和8U转换的方式
2020/06/03 Python
Python3爬虫中pyspider的安装步骤
2020/07/29 Python
爱游人:Travelliker
2017/09/05 全球购物
护理不良事件检讨书
2014/02/06 职场文书
高中军训感言1000字
2014/03/01 职场文书
职业生涯规划书结束语
2014/04/15 职场文书
房地产资料员岗位职责
2014/07/02 职场文书
群众路线教育实践活动对照检查材料思想汇报(副处级领导)
2014/10/04 职场文书
导游词欢迎词
2015/02/02 职场文书
2016感恩母亲节校园广播稿
2015/12/17 职场文书
如何做好工作总结!
2019/04/10 职场文书
Pytest实现setup和teardown的详细使用详解
2021/04/17 Python
使用 JavaScript 制作页面效果
2021/04/21 Javascript
springboot+VUE实现登录注册
2021/05/27 Vue.js
关于mysql中时间日期类型和字符串类型的选择
2021/11/27 MySQL