Python 函数调用运算符优先级
据我所知,函数调用优先于属性访问,这让我感到困惑Python 函数调用运算符优先级,python,function,parsing,expression,Python,Function,Parsing,Expression,据我所知,函数调用优先于属性访问,这让我感到困惑 >>> class cls: def func(self): print("Method") >>> def func(): print("Global Func") >>> obj=cls() >>> obj.func() #1 Method >>> (obj.func)() #2 Method >>&
>>> class cls:
def func(self):
print("Method")
>>> def func():
print("Global Func")
>>> obj=cls()
>>> obj.func() #1
Method
>>> (obj.func)() #2
Method
>>> obj.(func()) #3
SyntaxError: invalid syntax
3是预期的语法错误,但如果函数调用优先于属性访问,为什么1和2会产生相同的结果?根据该网站链接到的官方Python文档,该网站略有错误: 您会注意到,Python文档中列出的运算符优先级在表中倒数第二个位置,都在同一行:
x[index]
,x[index:index]
,x(参数…
,x.attribute
。正如文件所述
同一框中的运算符具有相同的优先级。。。同一框中的运算符从左到右分组(幂运算除外,幂运算从右到左分组)
您链接到的站点声明相同,只是将这四件事按顺序排列,而不是出于任何原因将它们放在同一个框中。您希望这有什么不同?我不知道优先级在这里是如何起作用的。我希望obj.func()会产生一个错误,因为它会在func()之后产生obj.Noneevaluated@ColinHicks属性名称必须是字符串FWIW,因此Python这样做是毫无意义的。(当然,我知道你知道这一点,这也是为什么你认为这是一个错误)