老生常谈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实现将读入的多维list转为一维list的方法
Jun 28 Python
浅谈Python批处理文件夹中的txt文件
Mar 11 Python
如何更优雅地写python代码
Jul 02 Python
python 实现的发送邮件模板【普通邮件、带附件、带图片邮件】
Jul 06 Python
python字典的setdefault的巧妙用法
Aug 07 Python
python区分不同数据类型的方法
Oct 14 Python
python opencv图片编码为h264文件的实例
Dec 12 Python
pyqt5中动画的使用详解
Apr 01 Python
jupyternotebook 撤销删除的操作方式
Apr 17 Python
Python3 pywin32模块安装的详细步骤
May 26 Python
Python通过len函数返回对象长度
Oct 22 Python
python3定位并识别图片验证码实现自动登录功能
Jan 29 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使用google地图应用实例
2014/12/31 PHP
Yii2中YiiBase自动加载类、引用文件方法分析(autoload)
2016/07/25 PHP
PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
2018/04/20 PHP
ThinkPHP5.0框架使用build 自动生成模块操作示例
2019/04/11 PHP
php中字符串和整数比较的操作方法
2019/06/06 PHP
PHP 99乘法表的几种实现代码
2020/10/13 PHP
论坛特效代码收集(落伍转发-不错)
2006/12/02 Javascript
JavaScript 字符编码规则
2009/05/04 Javascript
jQuery数组处理方法汇总
2011/06/20 Javascript
JavaScript(js)设置默认输入焦点(focus)
2012/12/28 Javascript
JS如何将数字类型转化为没3个一个逗号的金钱格式
2014/01/27 Javascript
简介JavaScript中Math.cos()余弦方法的使用
2015/06/15 Javascript
jQuery实现的淡入淡出二级菜单效果代码
2015/09/15 Javascript
详解js中的apply与call的用法
2016/07/30 Javascript
jQuery选择器总结之常用元素查找方法
2016/08/04 Javascript
使用开源工具制作网页验证码的方法
2016/10/17 Javascript
微信 java 实现js-sdk 图片上传下载完整流程
2016/10/21 Javascript
浅析jQuery操作select控件的取值和设值
2016/12/07 Javascript
JS动态生成年份和月份实例代码
2017/02/04 Javascript
bootstrap table表格插件使用详解
2017/05/08 Javascript
原生js实现简单的模态框示例
2017/09/08 Javascript
js实现数组和对象的深浅拷贝
2017/09/30 Javascript
vue2导航根据路由传值,而改变导航内容的实例
2017/11/10 Javascript
JavaScript闭包原理与用法实例分析
2018/08/10 Javascript
keep-alive不能缓存多层级路由菜单问题解决
2020/03/10 Javascript
js实现双人五子棋小游戏
2020/05/28 Javascript
简单介绍Python中的filter和lambda函数的使用
2015/04/07 Python
Python 查看文件的编码格式方法
2017/12/21 Python
Python 读取指定文件夹下的所有图像方法
2018/04/27 Python
使用python搭建服务器并实现Android端与之通信的方法
2019/06/28 Python
Django中Aggregation聚合的基本使用方法
2020/07/09 Python
python 使用csv模块读写csv格式文件的示例
2020/12/02 Python
trivago美国:全球最大的酒店价格比较网站
2018/01/18 全球购物
就业自荐书
2013/12/05 职场文书
党员公开承诺书
2014/03/25 职场文书
2016年全国爱眼日宣传教育活动总结
2016/04/05 职场文书