老生常谈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常见文件操作的函数示例代码
Nov 15 Python
Python中使用glob和rmtree删除目录子目录及所有文件的例子
Nov 21 Python
用Python计算三角函数之acos()方法的使用
May 15 Python
python实现统计代码行数的方法
May 22 Python
详解python实现读取邮件数据并下载附件的实例
Aug 03 Python
解决Python的str强转int时遇到的问题
Apr 09 Python
pyqt5实现绘制ui,列表窗口,滚动窗口显示图片的方法
Jun 20 Python
python实现两张图片拼接为一张图片并保存
Jul 16 Python
python Django的web开发实例(入门)
Jul 31 Python
python getopt模块使用实例解析
Dec 18 Python
使用Keras构造简单的CNN网络实例
Jun 29 Python
利用Python实现翻译HTML中的文本字符串
Jun 21 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生成简单的验证码
2016/06/01 PHP
PHP7常量数组用法分析
2016/09/26 PHP
PHP获取文本框、密码域、按钮的值实例代码
2017/04/19 PHP
jquery ui dialog ie8出现滚动条的解决方法
2010/12/06 Javascript
JS中setInterval、setTimeout不能传递带参数的函数的解决方案
2013/04/28 Javascript
js实现动态改变字体大小代码
2014/01/02 Javascript
jquery常用特效方法使用示例
2014/04/25 Javascript
jquery中添加属性和删除属性
2015/06/03 Javascript
js查看一个函数的执行时间实例代码
2015/09/12 Javascript
学习JavaScript设计模式之责任链模式
2016/01/18 Javascript
JavaScript中关联原型链属性特性
2016/02/13 Javascript
浅析如何利用JavaScript进行语音识别
2016/10/27 Javascript
浅谈js中同名函数和同名变量的执行问题
2017/02/12 Javascript
ES6新特性四:变量的解构赋值实例
2017/04/21 Javascript
关于vue-router的beforeEach无限循环的问题解决
2017/09/09 Javascript
vue2.5.2使用http请求获取静态json数据的实例代码
2018/02/27 Javascript
vue实现的双向数据绑定操作示例
2018/12/04 Javascript
跟老齐学Python之用Python计算
2014/09/12 Python
Python错误: SyntaxError: Non-ASCII character解决办法
2017/06/08 Python
python的dataframe转换为多维矩阵的方法
2018/04/11 Python
Python3.4解释器用法简单示例
2019/03/22 Python
python中pip的使用和修改下载源的方法
2019/07/08 Python
Python GUI编程学习笔记之tkinter界面布局显示详解
2020/03/30 Python
使用分层画布来优化HTML5渲染的教程
2015/05/08 HTML / CSS
英国游戏机和游戏购物网站:365games.co.uk
2018/06/18 全球购物
吉列剃须刀英国官网:Gillette英国
2019/03/28 全球购物
三星加拿大官方网上商店:Samsung CA
2020/12/18 全球购物
恒华伟业笔试面试题
2015/02/26 面试题
大学生自我鉴定
2013/12/16 职场文书
大型会议策划方案
2014/05/17 职场文书
罚站检讨书
2015/01/29 职场文书
2016猴年开门红标语口号
2015/12/26 职场文书
opencv 分类白天与夜景视频的方法
2021/06/05 Python
MySQL8.0.18配置多主一从
2021/06/21 MySQL
mysql联合索引的使用规则
2021/06/23 MySQL
javascript遍历对象的五种方式实例代码
2021/10/24 Javascript