python中的函数和可调用对象有什么区别?

Chemss-Eddine BenHassine
class Adder:
      def __call__(self, x, y):
          return x + y

add1 = Adder()
def add2(x, y):
    return x + y

add1add2类型之间有什么区别

iBug

在您的超简单示例中。没有实际的区别,因为函数也是可调用的对象。

但是,可调用对象是您编写的类对象,因此您可以编写以下代码:

class Counter:
    def __init__(self, value = 0):
        self.n = 0

    def __call__(self):
        self.n += 1
        return self.n

    def __repr__(self):
        return str(self.n)

redWins = Counter()
blueWins = Counter()

if foo():
    redWins()
else:
    blueWins()

print("Red has won {} times.\nBlue has won {} times."
      .format(redWins, blueWins))

而且您会发现仅使用函数来实现这样的类很困难。即使您尝试使用全局变量来做,也不能拥有一个全局变量的单独实例。

查看更多:函数,可调用对象,以及如何在Python中创建它们

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Zend2 中的工厂服务和可调用服务有什么区别?

python中对象的方法和属性有什么区别?

Python中的语句和函数有什么区别?

函数和调用函数的箭头函数有什么区别

可读属性方法和仅以属性形式返回数据的可调用函数之间有什么区别?

apply()函数和使用该类的对象的函数调用之间有什么区别?

调用函数和传递函数有什么区别?

NumPy对象方法和NumPy函数调用之间有什么区别?

调用和返回函数有什么区别?

{} 和 () 在调用函数时有什么区别?

使用函数在setState中返回对象和直接使用对象之间有什么区别?

可调用概念和std :: is_function类型特征之间有什么区别?

Perl中的函数调用和goto&NAME有什么区别?

在 C++ 类成员函数中调用 foo() 和 ::foo() 有什么区别?

在Dart中,使用'new'关键字和直接调用构造函数有什么区别?

在form_load和button_click中调用函数有什么区别吗?

javascript中的函数调用有什么区别?

API 调用中的“路径”和“查询”有什么区别

在JavaScript中调用function和function()有什么区别?

Python字典和Javascript对象之间有什么区别?

C++中的对象的*和&有什么区别

打字稿中的枚举和对象有什么区别

Java中的引用和对象有什么区别?

Objective-C对象中的* a和** a有什么区别?

R对象中的$和attr(,var)有什么区别?

Maya(脚本)中的对象和节点有什么区别?

lambda和常规函数之间的python有什么区别?

lambda和常规函数之间的python有什么区别?

Spark中sort和orderBy函数有什么区别