python - 函数调用运算符优先级
问题描述
根据这个站点函数调用优先于属性访问,这让我感到困惑。
>>> 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 文档,该网站略有错误:https ://docs.python.org/3/reference/expressions.html#operator-precedence
您会注意到 Python 文档中列出的运算符优先级在表中倒数第二个插槽中都位于同一行:x[index]
, x[index:index]
, x(arguments...)
, x.attribute
。正如文档所述,
同一框中的运算符具有相同的优先级。...同一框中的运算符从左到右分组(取幂除外,它从右到左分组)。
您链接到的网站声明相同,只是将这四件事按顺序排列,而不是放在同一个框中,无论出于何种原因。
推荐阅读
- javascript - 在 Ext.query('.classname')-EXTJS 上删除所有的锄头
- excel - 具有多个条件的 SUMIF 因 <> 运算符而失败
- php - Laravel - 从长 api 调用更新客户端
- google-bigquery - 如何解决 BigQuery“请求无法完成”错误?
- selenium-webdriver - 如何等待页面重新打开
- android - Android Studio 将图像从 drawable 上传到 firebase 存储
- java - 如果未选中复选框,JavaFX 将删除执行的操作
- python-3.x - 将 zip 存档拆分为多个块
- jmeter - 如何在 JMeter 中创建具有唯一标头值的测试计划
- swift - 在表视图控制器中按列分隔对象