老生常谈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定时检查启动某个exe程序适合检测exe是否挂了
Jan 21 Python
Python操作列表的常用方法分享
Feb 13 Python
python分析作业提交情况
Nov 22 Python
Python测试人员需要掌握的知识
Feb 08 Python
python实现百度语音识别api
Apr 10 Python
django 邮件发送模块smtp使用详解
Jul 22 Python
django使用admin站点上传图片的实例
Jul 28 Python
Django3.0 异步通信初体验(小结)
Dec 04 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
Jan 16 Python
在Python IDLE 下调用anaconda中的库教程
Mar 09 Python
Django DRF认证组件流程实现原理详解
Aug 17 Python
Django多数据库联用实现方法解析
Nov 12 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入门学习知识点六 PHP文件的读写操作代码
2011/07/14 PHP
php实现兼容2038年后Unix时间戳转换函数
2015/03/18 PHP
DWZ+ThinkPHP开发时遇到的问题分析
2016/12/12 PHP
PHP实现对数组分页处理实例详解
2017/02/07 PHP
一个加载js文件的小脚本
2007/06/28 Javascript
JavaScript中的this实例分析
2011/04/28 Javascript
jQuery中jqGrid分页实现代码
2011/11/04 Javascript
html+javascript实现可拖动可提交的弹出层对话框效果
2013/08/05 Javascript
javascript设计模式之对象工厂函数与构造函数详解
2015/07/30 Javascript
Vue.js实战之利用vue-router实现跳转页面
2017/04/01 Javascript
使用Bootstrap + Vue.js实现表格的动态展示、新增和删除功能
2017/11/27 Javascript
基于JavaScript实现幸运抽奖页面
2020/07/05 Javascript
JS中的防抖与节流及作用详解
2019/04/01 Javascript
详解Vue template 如何支持多个根结点
2020/02/10 Javascript
下载安装setuptool和pip linux安装pip    
2014/01/24 Python
Python中函数eval和ast.literal_eval的区别详解
2017/08/10 Python
python自动循环定时开关机(非重启)测试
2019/08/26 Python
python中struct模块之字节型数据的处理方法
2019/08/27 Python
Python3.7实现验证码登录方式代码实例
2020/02/14 Python
django 读取图片到页面实例
2020/03/27 Python
Python判断三段线能否构成三角形的代码
2020/04/12 Python
哪些是python中web开发框架
2020/06/17 Python
解析python 中/ 和 % 和 //(地板除)
2020/06/28 Python
Python爬虫爬取糗事百科段子实例分享
2020/07/31 Python
python实现简单贪吃蛇游戏
2020/09/29 Python
提高EJB性能都有哪些技巧
2012/03/25 面试题
党员实事承诺书
2014/03/26 职场文书
大学生个人求职信
2014/06/02 职场文书
美化环境标语
2014/06/20 职场文书
2015年复活节活动总结
2015/02/27 职场文书
工程合作意向书范本
2015/05/09 职场文书
防卫过当辩护词
2015/05/21 职场文书
画展观后感
2015/06/17 职场文书
公司劳动纪律管理制度
2015/08/04 职场文书
python绘图subplots函数使用模板的示例代码
2021/04/30 Python
GO语言异常处理分析 err接口及defer延迟
2022/04/14 Golang