老生常谈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实现抓取网页生成Excel文件的方法示例
Aug 05 Python
关于python写入文件自动换行的问题
Jun 23 Python
对Python3使运行暂停的方法详解
Feb 18 Python
python实现手机销售管理系统
Mar 19 Python
选择python进行数据分析的理由和优势
Jun 25 Python
Python3从零开始搭建一个语音对话机器人的实现
Aug 23 Python
详解基于python的多张不同宽高图片拼接成大图
Sep 26 Python
Python爬取豆瓣视频信息代码实例
Nov 16 Python
python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
Mar 08 Python
Python基于class()实现面向对象原理详解
Mar 26 Python
Python使用graphviz画流程图过程解析
Mar 31 Python
python 决策树算法的实现
Oct 09 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 从数据库提取二进制图片的处理代码
2009/09/09 PHP
Wordpress php 分页代码
2009/10/21 PHP
PHP微信红包API接口
2015/12/05 PHP
Windows Server 2008 R2和2012中PHP连接MySQL过慢的解决方法
2016/07/02 PHP
PHP与以太坊交互详解
2018/08/24 PHP
浅谈thinkphp的nginx配置,以及重写隐藏index.php入口文件方法
2019/10/12 PHP
解决windows上php xdebug 无法调试的问题
2020/02/19 PHP
javascript面向对象之Javascript 继承
2010/05/04 Javascript
javascript学习笔记(五)正则表达式
2011/04/08 Javascript
在IE浏览器中resize事件执行多次的解决方法
2011/07/12 Javascript
JavaScript中的object转换成number或string规则介绍
2014/12/31 Javascript
基于JavaScript实现移动端TAB触屏切换效果
2015/10/20 Javascript
JS/jQ实现免费获取手机验证码倒计时效果
2016/06/13 Javascript
深入理解jquery中的each用法
2016/12/14 Javascript
浅谈js中用$(#ID)来作为选择器的问题(id重复的时候)
2017/02/14 Javascript
Spring Boot+AngularJS+BootStrap实现进度条示例代码
2017/03/02 Javascript
JavaScript数据结构之单链表和循环链表
2017/11/28 Javascript
three.js实现3D影院的原理的代码分析
2017/12/18 Javascript
JQuery事件委托原理与用法实例分析
2019/05/13 jQuery
JS学习笔记之数组去重实现方法小结
2019/05/29 Javascript
vue实现商城秒杀倒计时功能
2019/12/12 Javascript
Python爬虫辅助利器PyQuery模块的安装使用攻略
2016/04/24 Python
Django原生sql也能使用Paginator分页的示例代码
2017/11/15 Python
python 美化输出信息的实例
2018/10/15 Python
Linux 修改Python命令的方法示例
2018/12/03 Python
python根据url地址下载小文件的实例
2018/12/18 Python
详解Matplotlib绘图之属性设置
2019/08/23 Python
jupyter 添加不同内核的操作
2021/02/06 Python
香港No.1得奖零食网:香港零食大王
2016/07/22 全球购物
好人好事事迹材料
2014/02/12 职场文书
森林防火工作方案
2014/02/14 职场文书
法人委托书范本
2014/09/15 职场文书
敲诈同学钱财检讨书范文
2014/11/18 职场文书
毕业证明书
2015/06/19 职场文书
【DOTA2】高能暴走TK秀!PSG LGD vs ASTER - DPC 2022 WINTER TOUR CN
2022/04/02 DOTA
Python 绘制多因子柱状图
2022/05/11 Python