老生常谈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的Flask框架中SQLAlchemy使用时的乱码问题解决
Nov 07 Python
python解决方案:WindowsError: [Error 2]
Aug 28 Python
CentOS 6.X系统下升级Python2.6到Python2.7 的方法
Oct 12 Python
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
Jun 23 Python
利用python模拟sql语句对员工表格进行增删改查
Jul 05 Python
Python实现按照指定要求逆序输出一个数字的方法
Apr 19 Python
Python3之手动创建迭代器的实例代码
May 22 Python
django使用haystack调用Elasticsearch实现索引搜索
Jul 24 Python
python matplotlib饼状图参数及用法解析
Nov 04 Python
python实现两个一维列表合并成一个二维列表
Dec 02 Python
谈谈python垃圾回收机制
Sep 27 Python
Python初识逻辑与if语句及用法大全
Aug 07 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
通过ODBC连接的SQL SERVER实例
2006/10/09 PHP
PHP与SQL注入攻击[二]
2007/04/17 PHP
PHP+iFrame实现页面无需刷新的异步文件上传
2014/09/16 PHP
wordpress安装过程中遇到中文乱码的处理方法
2015/04/21 PHP
PHP7常量数组用法分析
2016/09/26 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
JavaScript面向对象之体会[总结]
2008/11/13 Javascript
关于javaScript注册click事件传递参数的不成功问题
2014/07/18 Javascript
每个程序员都需要学习 JavaScript 的7个理由小结
2016/09/03 Javascript
纯JavaScript 实现flappy bird小游戏实例代码
2016/09/27 Javascript
JS实现字符串转驼峰格式的方法
2016/12/16 Javascript
jQuery实现字符串全部替换的方法【推荐】
2017/03/09 Javascript
Puppeteer环境搭建的详细步骤
2018/09/21 Javascript
Vue指令v-for遍历输出JavaScript数组及json对象的常见方式小结
2019/02/11 Javascript
node实现简单的增删改查接口实例代码
2019/08/22 Javascript
微信小程序调用wx.getImageInfo遇到的坑解决
2020/05/31 Javascript
vue结合el-upload实现腾讯云视频上传功能
2020/07/01 Javascript
VUE使用 wx-open-launch-app 组件开发微信打开APP功能
2020/08/11 Javascript
深入理解Python分布式爬虫原理
2017/11/23 Python
django获取from表单multiple-select的value和id的方法
2019/07/19 Python
python使用celery实现异步任务执行的例子
2019/08/28 Python
python二元表达式用法
2019/12/04 Python
如何通过Django使用本地css/js文件
2020/01/20 Python
Python实现自动打开电脑应用的示例代码
2020/04/17 Python
20行Python代码实现一款永久免费PDF编辑工具的实现
2020/08/27 Python
CSS3中的content属性使用示例
2015/07/20 HTML / CSS
植物选择:Botanic Choice
2017/02/15 全球购物
Yves Rocher捷克官方网站:植物化妆品的创造者
2019/07/31 全球购物
自主招生自荐信
2013/12/08 职场文书
机工车间主任岗位职责
2014/03/05 职场文书
我是一名护士演讲稿
2014/08/28 职场文书
离婚协议书怎么写
2014/09/12 职场文书
锅炉工岗位职责
2015/02/13 职场文书
药店营业员岗位职责
2015/04/14 职场文书
普希金的诗歌赏析(3首)
2019/08/20 职场文书
导游词之潮音寺
2019/09/26 职场文书