老生常谈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中的Classes和Metaclasses详解
Apr 02 Python
浅析Python中的多重继承
Apr 28 Python
Python实现队列的方法
May 26 Python
Python实现信用卡系统(支持购物、转账、存取钱)
Jun 24 Python
详解Python实现多进程异步事件驱动引擎
Aug 25 Python
Python有序字典简单实现方法示例
Sep 28 Python
使用numba对Python运算加速的方法
Oct 15 Python
python的set处理二维数组转一维数组的方法示例
May 31 Python
安装并免费使用Pycharm专业版(学生/教师)
Sep 24 Python
Python 测试框架unittest和pytest的优劣
Sep 26 Python
pytorch 梯度NAN异常值的解决方案
Jun 05 Python
Python 读取千万级数据自动写入 MySQL 数据库
Jun 28 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中上传多个文件的表单设计例子
2014/11/19 PHP
PHP配置把错误日志以邮件方式发送方法(Windows系统)
2015/06/23 PHP
PHP给前端返回一个JSON对象的实例讲解
2018/05/31 PHP
thinkphp3.2同时连接两个数据库的简单方法
2019/08/13 PHP
php 命名空间(namespace)原理与用法实例小结
2019/11/13 PHP
JavaScript中Array 对象相关的几个方法
2006/12/22 Javascript
Javascript & DHTML 实例编程(教程)DOM基础和基本API
2007/06/02 Javascript
js 解决“options为空或不是对象”
2008/12/22 Javascript
IE8 下的Js错误HTML Parsing Error...
2009/08/14 Javascript
使用js显示当前时间示例
2014/03/02 Javascript
DOM基础教程之使用DOM + Css
2015/01/20 Javascript
js实现鼠标触发图片抖动效果的方法
2015/02/27 Javascript
windows下安装nodejs及框架express
2015/08/07 NodeJs
JS实现随页面滚动显示/隐藏窗口固定位置元素
2016/02/26 Javascript
Bootstrap组件(一)之菜单
2016/05/11 Javascript
Javascript单例模式的介绍和实例
2016/10/08 Javascript
jQuery ajax 当async为false时解决同步操作失败的问题
2016/11/18 Javascript
jQuery设计思想
2017/03/07 Javascript
Vue.directive自定义指令的使用详解
2017/03/10 Javascript
详解angularjs获取元素以及angular.element()用法
2017/07/25 Javascript
微信小程序实现保存图片到相册功能
2018/11/30 Javascript
JavaScript this绑定过程深入详解
2018/12/07 Javascript
Vue开发Html5微信公众号的步骤
2019/04/11 Javascript
uniapp,微信小程序中使用 MQTT的问题
2020/07/11 Javascript
Python简单读取json文件功能示例
2017/11/30 Python
pytorch中tensor张量数据类型的转化方式
2019/12/31 Python
python在一个范围内取随机数的简单实例
2020/08/16 Python
python两种获取剪贴板内容的方法
2020/11/06 Python
详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
2021/01/24 Python
韩国休闲女装品牌网站:ANAIS
2016/08/24 全球购物
JBL美国官方商店:扬声器、耳机等
2019/12/01 全球购物
语文高效课堂实施方案
2014/05/03 职场文书
2014年学校领导班子对照检查材料
2014/09/19 职场文书
导游词之太原天龙山
2020/01/02 职场文书
详解Spring事件发布与监听机制
2021/06/30 Java/Android
html5 录制mp3音频支持采样率和比特率设置
2021/07/15 Javascript