首页 > 编程语言 > 详细

python函数重载

时间:2020-03-02 10:26:00      阅读:67      评论:0      收藏:0      [点我收藏+]

函数重载?简单的理解,支持多个同名函数的定义,只是参数的个数或者类型不同,在调用的时候,解释器会根据参数的个数或者类型,调用相应的函数。

Python 函数的形参十分灵活,我们可以只定义一个函数来实现相同的功能,就像这样

>>> def func(*args):
...   if len(args) == 1:
...     print(One parameter)
...   elif len(args) == 2:
...     print(Two parameters)
...   elif len(args) == 3:
...     print(Three parameters)
...   else:
...     print(Error)
... 
>>> func(1)
One parameter
>>> func(1, 2)
Two parameters
>>> func(1, 2, 3)
Three parameters
>>> func(1, 2, 3, 4)
Error

Python 要实现类似的功能,可以借助 functools.singledispatch 装饰器

from functools import singledispatch
 
@singledispatch
def func(a):
    print(fOther: {a})
 
@func.register(int)
def _(a):
    print(fInt: {a})
 
@func.register(float)
def _(a):
    print(fFloat: {a})
 
if __name__ == __main__:
    func(zzz)
    func(1)
    func(1.2)
Other: zzz
Int: 1
Float: 1.2

需要注意的是,这种方式只能够根据第一个参数的类型去确定最后调用的函数。

关于 singledispatch 的更多细节请看官方文档

https://docs.python.org/3.6/library/functools.html#functools.singledispatch

python函数重载

原文:https://www.cnblogs.com/pfeiliu/p/12393283.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!