老生常谈python中的重载

 更新时间:2018年11月11日 16:07:57   作者:何惜戈  
所谓重载,就是多个相同函数名的函数,根据传入的参数个数,参数类型而执行不同的功能。所以函数重载实质上是为了解决编程中参数可变不统一的问题。这篇文章主要介绍了老生常谈python中的重载,需要的朋友可以参考下

在一些静态语言中,大都存在有一个重载的概念。这是在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中的重载,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

相关文章

  • 详解pytorch中squeeze()和unsqueeze()函数介绍

    详解pytorch中squeeze()和unsqueeze()函数介绍

    这篇文章主要介绍了详解pytorch中squeeze()和unsqueeze()函数介绍,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 详解Python中range()与xrange()的区别

    详解Python中range()与xrange()的区别

    range() 和 xrange() 是两个函数,可用于在 Python的 for 循环中迭代一定次数。本文将通过示例详细说说二者的区别与使用,需要的可以参考一下
    2022-09-09
  • Python按指定列的空值删除行的操作代码

    Python按指定列的空值删除行的操作代码

    这篇文章主要介绍了Python按指定列的空值删除行的操作代码,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-01-01
  • Python实现Selenium自动化Page模式

    Python实现Selenium自动化Page模式

    这篇文章主要介绍了Python实现Selenium自动化Page模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • 详解Python中下划线的5种含义

    详解Python中下划线的5种含义

    本文介绍了Python中单下划线和双下划线的各种含义和命名约定,名称修饰的工作原理,以及它如何影响你自己的Python类,感兴趣的可以了解一下
    2021-07-07
  • Django Form设置文本框为readonly操作

    Django Form设置文本框为readonly操作

    这篇文章主要介绍了Django Form设置文本框为readonly操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • Python3和pyqt5实现控件数据动态显示方式

    Python3和pyqt5实现控件数据动态显示方式

    今天小编就为大家分享一篇Python3和pyqt5实现控件数据动态显示方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • 详解Python中import模块导入的实现原理

    详解Python中import模块导入的实现原理

    这篇文章主要给大家介绍了Python中import模块导入的实现原理,主要从什么是模块,import搜索路径以及导入原理这三个方面给大家介绍,感兴趣的小伙伴跟着小编一起来看看吧
    2023-08-08
  • python实现支持目录FTP上传下载文件的方法

    python实现支持目录FTP上传下载文件的方法

    这篇文章主要介绍了python实现支持目录FTP上传下载文件的方法,适用于windows及Linux平台FTP传输文件及文件夹,需要的朋友可以参考下
    2015-06-06
  • python局部赋值的规则

    python局部赋值的规则

    Python提出如下假设:如果在函数体内的任何地方对变量赋值,则Python将名称添加到局部命名空间中。
    2013-03-03

最新评论