老生常谈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版
Dec 07 Python
Python sqlite3事务处理方法实例分析
Jun 19 Python
Python3.6实现连接mysql或mariadb的方法分析
May 18 Python
Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式)
Oct 22 Python
python使用if语句实现一个猜拳游戏详解
Aug 27 Python
PYcharm 激活方法(推荐)
Mar 23 Python
4行Python代码生成图像验证码(2种)
Apr 07 Python
520使用Python实现“我爱你”表白
May 20 Python
python爬取2021猫眼票房字体加密实例
Feb 19 Python
python3.9之你应该知道的新特性详解
Apr 29 Python
python使用glob检索文件的操作
May 20 Python
解决Pytorch半精度浮点型网络训练的问题
May 24 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
关于使用coreseek并为其做分页的介绍
2013/06/21 PHP
浅析ThinkPHP的模板输出功能
2014/07/01 PHP
php生成图片缩略图的方法
2015/04/07 PHP
PHP中抽象类、接口的区别与选择分析
2016/03/29 PHP
JS 对象介绍
2010/01/20 Javascript
express的中间件bodyParser详解
2014/12/04 Javascript
浅谈javascript中call()、apply()、bind()的用法
2015/04/20 Javascript
jQuery实现大转盘抽奖活动仿QQ音乐代码分享
2015/08/21 Javascript
JS实现在状态栏显示打字效果完整实例
2015/11/02 Javascript
jQuery判断元素是否显示 是否隐藏的简单实现代码
2016/05/19 Javascript
jquery ajax结合thinkphp的getjson实现跨域的方法
2016/06/06 Javascript
利用jquery实现瀑布流3种案例
2016/09/18 Javascript
BootStrap tooltip提示框使用小结
2016/10/26 Javascript
微信小程序  modal弹框组件详解
2016/10/27 Javascript
angular ngClick阻止冒泡使用默认行为的方法
2016/11/03 Javascript
Bootstrap的基本应用要点浅析
2016/12/19 Javascript
谈谈Vue.js——vue-resource全攻略
2017/01/16 Javascript
用JavaScript和jQuery实现瀑布流
2017/03/19 Javascript
Javascript ES6中数据类型Symbol的使用详解
2017/05/02 Javascript
Linux系统中利用node.js提取Word(doc/docx)及PDF文本的内容
2017/06/17 Javascript
详解webpack之scss和postcss-loader的配置
2018/01/09 Javascript
新版小程序登录授权的方法
2018/12/12 Javascript
vue 获取视频时长的实例代码
2019/08/20 Javascript
python获得linux下所有挂载点(mount points)的方法
2015/04/29 Python
python简单判断序列是否为空的方法
2015/06/30 Python
python实现单线程多任务非阻塞TCP服务端
2017/06/13 Python
Python实现的根据IP地址计算子网掩码位数功能示例
2018/05/23 Python
django 捕获异常和日志系统过程详解
2019/07/18 Python
使用python 的matplotlib 画轨道实例
2020/01/19 Python
python判断变量是否为列表的方法
2020/09/17 Python
Python偏函数实现原理及应用
2020/11/20 Python
英国最大的自有市场,比亚马逊便宜:Flubit
2019/03/19 全球购物
世界上最大的铁人三项商店:Tri UK
2020/11/04 全球购物
酒店工程部主管岗位职责
2015/04/16 职场文书
首席执行官观后感
2015/06/03 职场文书
《圆的周长》教学反思
2016/02/17 职场文书