老生常谈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程序设计入门(1)基本语法简介
Jun 13 Python
用Python实现协同过滤的教程
Apr 08 Python
Python 3.6 性能测试框架Locust安装及使用方法(详解)
Oct 11 Python
Matplotlib 生成不同大小的subplots实例
May 25 Python
django1.11.1 models 数据库同步方法
May 30 Python
python getpass模块用法及实例详解
Oct 07 Python
通过 Django Pagination 实现简单分页功能
Nov 11 Python
python中执行smtplib失败的处理方法
Jul 01 Python
使用python脚本自动生成K8S-YAML的方法示例
Jul 12 Python
如何在python中判断变量的类型
Jul 29 Python
Python实现简单的俄罗斯方块游戏
Sep 25 Python
python的列表生成式,生成器和generator对象你了解吗
Mar 16 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
基于mysql的bbs设计(二)
2006/10/09 PHP
PHP生成指定长度随机数最简洁的方法
2014/07/14 PHP
PHP中SimpleXML函数用法分析
2014/11/26 PHP
php简单生成一组与多组随机字符串的方法
2017/05/09 PHP
浅谈PHP错误类型及屏蔽方法
2017/05/27 PHP
详解no input file specified 三种解决方法
2019/11/29 PHP
php模拟post提交请求调用接口示例解析
2020/08/07 PHP
javascript 图片上传预览-兼容标准
2009/06/01 Javascript
script标签的 charset 属性使用说明
2010/12/04 Javascript
JS实现随机数生成算法示例代码
2013/08/08 Javascript
JavaScript的内存释放问题详解
2015/01/21 Javascript
Jquery轮播效果实现过程解析
2016/03/30 Javascript
JavaScript判断数组是否存在key的简单实例
2016/08/03 Javascript
js判断请求的url是否可访问,支持跨域判断的实现方法
2016/09/17 Javascript
Angularjs自定义指令实现分页插件(DEMO)
2017/09/16 Javascript
浅谈Vue-cli单文件组件引入less,sass,css样式的不同方法
2018/03/13 Javascript
详解从0开始搭建微信小程序(前后端)的全过程
2019/04/15 Javascript
Vue触发隐藏input file的方法实例详解
2019/08/14 Javascript
jQuery实现图片随机切换、抽奖功能(实例代码)
2019/10/23 jQuery
详解使用mocha对webpack打包的项目进行"冒烟测试"的大致流程
2020/04/27 Javascript
element-ui tree结构实现增删改自定义功能代码
2020/08/31 Javascript
[11:42]2018DOTA2国际邀请赛寻真——OG卷土重来
2018/08/17 DOTA
python使用7z解压软件备份文件脚本分享
2014/02/21 Python
python基础教程之面向对象的一些概念
2014/08/29 Python
Python学习教程之常用的内置函数大全
2017/07/14 Python
对Python3中dict.keys()转换成list类型的方法详解
2019/02/03 Python
Python安装OpenCV的示例代码
2020/03/05 Python
Canvas图片分割效果的实现
2019/07/29 HTML / CSS
医学类导师推荐信范文
2013/11/19 职场文书
岗位职责说明书
2014/05/07 职场文书
2014市府办领导班子“四风问题”对照检查材料思想汇报
2014/09/24 职场文书
2014年安全保卫工作总结
2014/11/13 职场文书
2014年社区个人工作总结
2014/12/02 职场文书
七年级作文之下雨天
2019/12/23 职场文书
Nginx下配置Https证书详细过程
2021/04/01 Servers
PHP使用QR Code生成二维码实例
2021/07/07 PHP