老生常谈python中的重载


Posted in Python onNovember 11, 2018

在一些静态语言中,大都存在有一个重载的概念。这是在OOP(面对对象编程)中一个必不可少的一个行为。

所谓重载,就是多个相同函数名的函数,根据传入的参数个数,参数类型而执行不同的功能。所以函数重载实质上是为了解决编程中参数可变不统一的问题。

python 中的重载

  在python中,具有重载的思想却没有重载的概念。所以有的人说python这么语言并不支持函数重载,有的人说python具有重载功能。实际上python编程中具有重载的目的缺无重载的行为,或者说是python并不需要重载!

  python是一门动态语言,不需要声明变量类型,函数中可以接受任何类型的参数也就无法根据参数类型来支持重载,python没有必要去考虑参数的类型问题,这些都可以在函数内部判断处理,并无必要去在写一个函数。python 有多种传参方式,默认参数/可变参数/可变关键字参数可以处理函数参数中参数可变的问题。

python3.4中增加的重载机制

如果你不用重载就会浑身难受的话

那么在python3.4中提供有一个转发机制来实现重载

from functools import singledispatch  
@singledispatch 
def function(obj): 
  print('%r'%(obj))
@function.register(int) 
def function_int(obj): 
  print('Integer: %d'%(obj)) 
@function.register(str) 
def function_int(obj): 
  print('String: %s'%(obj)) 
@function.register(list) 
def function_list(obj): 
  print('List: %r'%(obj)) 
if __name__ == "__main__": 
   function(1) 
   function('hello') 
   function(range(3)) 
   function(object)

总结

以上所述是小编给大家介绍的python中的重载,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Python 相关文章推荐
python多重继承新算法C3介绍
Sep 28 Python
十条建议帮你提高Python编程效率
Feb 16 Python
Python 制作糗事百科爬虫实例
Sep 22 Python
Python解析excel文件存入sqlite数据库的方法
Nov 15 Python
200行自定义python异步非阻塞Web框架
Mar 15 Python
python plotly绘制直方图实例详解
Jul 22 Python
python flask web服务实现更换默认端口和IP的方法
Jul 26 Python
基于Python检测动态物体颜色过程解析
Dec 04 Python
Python 实现一个计时器
Jul 28 Python
Python selenium爬取微信公众号文章代码详解
Aug 12 Python
python工具——Mimesis的简单使用教程
Jan 16 Python
详解Python爬虫爬取博客园问题列表所有的问题
Jan 18 Python
Django跨域请求CSRF的方法示例
Nov 11 #Python
Python rstrip()方法实例详解
Nov 11 #Python
python requests爬取高德地图数据的实例
Nov 10 #Python
Python爬取商家联系电话以及各种数据的方法
Nov 10 #Python
Python中的取模运算方法
Nov 10 #Python
在Python中获取两数相除的商和余数方法
Nov 10 #Python
Python解决两个整数相除只得到整数部分的实例
Nov 10 #Python
You might like
深入Memcache的Session数据的多服务器共享详解
2013/06/13 PHP
wamp安装后自定义配置的方法
2014/08/23 PHP
php好代码风格的阶段性总结
2016/06/25 PHP
php中如何执行linux命令详解
2018/11/06 PHP
PHP封装的数据库模型Model类完整示例【基于PDO】
2019/03/14 PHP
javascript实现动态CSS换肤技术的脚本
2007/06/29 Javascript
javascript正则表达式中参数g(全局)的作用
2010/11/11 Javascript
Pro JavaScript Techniques学习笔记
2010/12/28 Javascript
js,jQuery 排序的实现代码,网页标签排序的实现,标签排序
2011/04/27 Javascript
JavaScript中的正则表达式简明总结
2014/04/04 Javascript
详解javascript传统方法实现异步校验
2016/01/22 Javascript
利用jQuery中的ajax分页实现代码
2016/02/25 Javascript
JavaScript表单焦点自动切换代码
2016/07/24 Javascript
angular之ng-template模板加载
2017/11/09 Javascript
Node层模拟实现multipart表单的文件上传示例
2018/01/02 Javascript
JS实现的3des+base64加密解密算法完整示例
2018/05/18 Javascript
bootstrap table合并行数据并居中对齐效果
2018/10/17 Javascript
JavaScript时间与时间戳的转换操作实例分析
2018/12/07 Javascript
JS求1到任意数之间的所有质数的方法详解
2019/05/20 Javascript
JS实现查找数组中对象的属性值是否存在示例
2019/05/24 Javascript
原生js+ajax分页组件
2020/01/30 Javascript
解决vue加scoped后就无法修改vant的UI组件的样式问题
2020/09/07 Javascript
用javascript实现倒计时效果
2021/02/09 Javascript
python实现的一个p2p文件传输实例
2014/06/04 Python
python3中set(集合)的语法总结分享
2017/03/24 Python
Python 2.x如何设置命令执行的超时时间实例
2017/10/19 Python
Python3实现的反转单链表算法示例
2019/03/08 Python
django的聚合函数和aggregate、annotate方法使用详解
2019/07/23 Python
django中使用Celery 布式任务队列过程详解
2019/07/29 Python
配置python的编程环境之Anaconda + VSCode的教程
2020/03/29 Python
使用 Python 读取电子表格中的数据实例详解
2020/04/17 Python
win10从零安装配置pytorch全过程图文详解
2020/05/08 Python
亲子活动总结
2014/04/26 职场文书
学术会议通知
2015/04/15 职场文书
行政处罚听证告知书
2015/07/01 职场文书
2016护理专业求职自荐书
2016/01/28 职场文书