老生常谈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 相关文章推荐
在CentOS上配置Nginx+Gunicorn+Python+Flask环境的教程
Jun 07 Python
Python 3中的yield from语法详解
Jan 18 Python
Python爬取商家联系电话以及各种数据的方法
Nov 10 Python
Linux CentOS Python开发环境搭建教程
Nov 28 Python
使用pyinstaller逆向.pyc文件
Dec 20 Python
PyTorch和Keras计算模型参数的例子
Jan 02 Python
pytorch之添加BN的实现
Jan 06 Python
tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式
Jan 23 Python
利用scikitlearn画ROC曲线实例
Jul 02 Python
python 通过pip freeze、dowload打离线包及自动安装的过程详解(适用于保密的离线环境
Dec 14 Python
python可视化分析的实现(matplotlib、seaborn、ggplot2)
Feb 03 Python
Python必备技巧之字符数据操作详解
Mar 23 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 字符串正则替换函数preg_replace使用说明
2011/07/15 PHP
php函数array_merge用法一例(合并同类数组)
2013/02/03 PHP
PHP register_shutdown_function函数的深入解析
2013/06/03 PHP
php输入数据统一类实例
2015/02/23 PHP
ThinkPHP3.2框架自带分页功能实现方法示例
2019/05/13 PHP
javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
2009/02/04 Javascript
JQuery判断HTML元素是否存在的两种解决方法
2013/12/26 Javascript
一个简单的Node.js异步操作管理器分享
2014/04/29 Javascript
jquery获取radio值实例
2014/10/16 Javascript
AngularJS进行性能调优的7个建议
2015/12/28 Javascript
JavaScript+CSS实现的可折叠二级菜单实例
2016/02/29 Javascript
js模式化窗口问题![window.dialogArguments]
2016/10/30 Javascript
vue.js父组件使用外部对象的方法示例
2017/04/25 Javascript
微信小程序 setData使用方法及常用错误解决办法
2017/05/11 Javascript
pm2 部署 node的三种方法示例
2017/10/20 Javascript
vue通过video.js解决m3u8视频播放格式的方法
2019/07/30 Javascript
Layui实现数据表格中鼠标悬浮图片放大效果,离开时恢复原图的方法
2019/09/11 Javascript
layui点击按钮页面会自动刷新的解决方案
2019/10/25 Javascript
JavaScript代码模拟鼠标自动点击事件示例
2020/08/07 Javascript
python 开发的三种运行模式详细介绍
2017/01/18 Python
200 行python 代码实现 2048 游戏
2018/01/12 Python
对Python中DataFrame按照行遍历的方法
2018/04/08 Python
Linux(Redhat)安装python3.6虚拟环境(推荐)
2018/05/05 Python
详解Python的数据库操作(pymysql)
2019/04/04 Python
pytorch自定义初始化权重的方法
2019/08/17 Python
python爬虫 urllib模块url编码处理详解
2019/08/20 Python
Python 列表的清空方式
2020/01/13 Python
Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性(推荐)
2020/07/03 Python
Numpy ndarray 多维数组对象的使用
2021/02/10 Python
英国国家美术馆商店:National Gallery
2019/05/01 全球购物
学习标兵获奖感言
2014/02/20 职场文书
英语教师自荐信
2014/05/26 职场文书
领导干部作风整顿剖析材料
2014/10/11 职场文书
小学运动会入场词
2015/07/18 职场文书
Nginx中使用Lua脚本与图片的缩略图处理的实现
2022/03/18 Servers
国产动画《万圣街》日语配音版制作决定!
2022/03/20 国漫