单分发器与泛型函数

单分发器与泛型函数

泛型函数是指由一组为不同类型参数执行相似操作地点函数组成的函数,具体调用哪一个函数的实现取决于分发算法和参数类型。

Python 单分发器是实现泛型函数的一种形式,由一个单一参数来决定选择和调用哪个函数。

>>> from functools import singledispatch
>>> @singledispatch
... def fun(arg, verbose=False):
...     if verbose:
...             print('Let me just say,',end=' ')
...     print(arg)
...
>>> @fun.register(int)
... def _(arg,verbose=False):
...     if verbose:
...             print('Strength in numbers',end=' ')
...     print(arg)
...
>>> @fun.register(int)
... def fun_num(arg,verbose=False):
...     if verbose:
...             print('Half of your number is:',end=' ')
...     print(arg/2)
...
>>> @fun.register(tuple)
... @fun.register(list)
... def _(arg, verbose=False):
  File "<stdin>", line 3
    def _(arg, verbose=False):
            ^
SyntaxError: invalid character in identifier
>>> @fun.register(list)
... @fun.register(tuple)
... def _(arg, verbose=False):
...     if verbose:
...             print('Enumerate this')
...     for i,v in enumerate(arg):
...             print(i,v)
...

>>> fun('Hello world')
Hello world
>>> fun('Hello world.',True)
Let me just say, Hello world.
>>> fun(11,True)
Half of your number is: 5.5
>>> def doNothing(arg, verbose=False):
...     print('Nothing to do.')
...
>>> fun.register(type(None),doNothing)

>>> fun(None)
Nothing to do.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值