python核心编程学习笔记-2016-08-16-01-可调用对象

    xiaoxiao2026-09-16  0

            可调用对象

            定义为任何能通过函数操作符“()“来调用的对象,还可以通过函数式编程接口来调用,如apply(),filter(),map()和reduce()等。

            python共有四种可调用对象,分别是函数,方法,类和一些类的的实例(实现了__call__()方法的实例)。

            函数对象,非常好理解,不管是内建函数(BIF)还是用户自定义函数(UDF),显然可以通过函数操作符“()“来调用。对于lambda表达式,它其实定义的也是一个函数对象,只要是函数对象,显然可以用函数操作符“()“来调用。如

    >>> lambdaFunc = lambda x: x * 2 >>> lambdaFunc(100) 200        方法对象,也同函数对象一样, 不管是内建方法(BIM)还是用户自定义方法(UDM),都能通过函数操作符“()“来调用。

    同理,类对象也一样,只不过调用类对象一般是创建实例。

    >>> class C(object): ... def __init__(self): ... pass ... >>> c = C() # 这既是调用类对象,也是实例化        最后就是实现了__call__()方法的实例。正常来说,我们调用实例是不需要函数操作符的。如

    >>> class C(object): ... def __init__(self): ... pass >>> c = C() >>> c # 调用实例,不需要函数操作符()       但是如果实例所属的类中,定义了__call__()方法,情况就发生变化了,如

    >>> class C(object): ... def __init__(self): ... pass ... ... def __call__(self, *args): ... print "I'm callable! Called with args:\n", args ... >>> c = C() >>> c() # 用函数操作符()调用实例,即等价于c.__call__() I'm callable Called with arguments: ()       从上面的例子可以看出,实现了__call__()方法的实例,当使用用函数操作符()调用实例时,其输出结果就是实例的__call__()方法的输出结果。

    转载请注明原文地址: https://ju.6miu.com/read-1312098.html
    最新回复(0)