我发现用
(int)('123')
与使用int('123')
相同
我对它进行了一些探索,发现它也可以与其他函数一起工作。你知道吗
def add_10(num):
return num + 10
print (add_10)(10) # prints 20
它也适用于类
class MyClass(object):
def __init__(self, x):
self.x = x
print (MyClass)(10).x # returns 10
我以前从没见过这种行为,有人用过吗?这个有名字吗?在文件的哪一部分有说明?为什么我们有这个?你知道吗
它可以在Python2.7和Python3中工作。你知道吗
编辑:
进一步测试,我注意到括号没有任何效果。使用((((int))))('2')
与int('2')
相同
换言之,Python中的函数只是一个普通对象。你知道吗
在一个对象的名称后面加上一对圆括号,不管它是什么,都会导致调用前一个对象,也就是说,它的
__call__
方法与传递的参数一起被调用。你知道吗因此,Python中的名称,无论是否来自函数,都可以用括号括起来。括号将首先解析为表达式-so- 在
(int)(5)
中,(int)
被处理为产生int
的表达式。恰好是一个可调用的对象。你知道吗使其更容易理解的一种方法是使括号中的表达式不那么琐碎。例如,可以提出“addable functions”,在添加时创建一个新的可调用对象,将返回值链接到所有函数。这样做或多或少很简单:
在交互控制台上的工作方式如下:
你可以用括号括住任何表达式。一种表达方式是名字。名称可以引用任何值,字符串、函数和类型都是不同类型的值。多层括号也不是特别的:因为带括号的表达式也是表达式,所以可以将它们放在括号中。你知道吗
您可以添加parenthesis in many places,而不影响代码的运行方式:
它不是强制转换,只是用括号包围函数对象。你知道吗
相关问题 更多 >
编程相关推荐