老生常谈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访问MySQL封装的常用类实例
Nov 11 Python
详解Python编程中包的概念与管理
Oct 16 Python
Python3 循环语句(for、while、break、range等)
Nov 20 Python
python3.6 +tkinter GUI编程 实现界面化的文本处理工具(推荐)
Dec 20 Python
Python实现PS滤镜特效之扇形变换效果示例
Jan 26 Python
python Celery定时任务的示例
Mar 13 Python
Python基础教程之利用期物处理并发
Mar 29 Python
python3.6根据m3u8下载mp4视频
Jun 17 Python
简单了解Python3 bytes和str类型的区别和联系
Dec 19 Python
Tensorflow之梯度裁剪的实现示例
Mar 08 Python
如何用Python 加密文件
Sep 10 Python
python基于OpenCV模板匹配识别图片中的数字
Mar 31 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
用PHP实现多服务器共享SESSION数据的方法
2007/03/16 PHP
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
2014/01/30 PHP
php格式化时间戳显示友好的时间实现思路及代码
2014/10/23 PHP
PHP并发多进程处理利器Gearman使用介绍
2016/05/16 PHP
用php实现分页效果的示例代码
2020/12/10 PHP
html读出文本文件内容
2007/01/22 Javascript
jQuery获取节点和子节点文本的方法
2014/07/22 Javascript
JS实现简单路由器功能的方法
2015/05/27 Javascript
jquery判断复选框选中状态以及区分attr和prop
2015/12/18 Javascript
各式各样的导航条效果css3结合jquery代码实现
2016/09/17 Javascript
基于百度地图实现产品销售的单位位置查看功能设计与实现
2016/10/21 Javascript
解决OneThink中无法异步提交kindeditor文本框中修改后的内容方法
2017/05/05 Javascript
JavaScript解析任意形式的json树型结构展示
2017/07/23 Javascript
vue实现登陆登出的实现示例
2017/09/15 Javascript
jsonp跨域及实现百度首页联想功能的方法
2018/08/30 Javascript
js使用formData实现批量上传
2020/03/27 Javascript
微信小程序常用赋值方法小结
2019/04/30 Javascript
微信浏览器左上角返回按钮监听的实现
2020/03/04 Javascript
Windows下搭建python开发环境详细步骤
2020/07/20 Python
详谈Pandas中iloc和loc以及ix的区别
2018/06/08 Python
python中copy()与deepcopy()的区别小结
2018/08/03 Python
Python多线程同步---文件读写控制方法
2019/02/12 Python
Python实现将HTML转成PDF的方法分析
2019/05/04 Python
PyCharm取消波浪线、下划线和中划线的实现
2020/03/03 Python
泰国折扣酒店预订:Hotels2Thailand
2018/03/20 全球购物
俄罗斯GamePark游戏商店网站:购买游戏、游戏机和配件
2020/03/13 全球购物
关于旅游的活动方案
2014/08/15 职场文书
创建绿色社区汇报材料
2014/08/22 职场文书
幼儿园国庆节活动总结
2015/03/23 职场文书
入党积极分子群众意见
2015/06/01 职场文书
2016拓展训练心得体会范文
2016/01/12 职场文书
你会写报告?产品体验报告到底该怎么写?
2019/08/14 职场文书
Java后台生成图片的完整步骤
2021/08/04 Java/Android
MySQL中varchar和char类型的区别
2021/11/17 MySQL
Vue3如何理解ref toRef和toRefs的区别
2022/02/18 Vue.js
ubuntu开机后ROS程序自启动问题
2022/12/24 Servers