Python语法:with_stm

2024-09-28 18:47:34 发布

您现在位置:Python中文网/ 问答频道 /正文

full python grammar specificationwith语句定义为:

with_stmt: 'with' with_item (',' with_item)*  ':' suite
with_item: test ['as' expr]

其中expr是:

^{pr2}$

为什么with_item包含expr规则而不是普通name?在

这是有效的python代码:

^{3}$

根据语法,这个代码也是有效的吗?在

with open('/dev/null') as x^y|z:
    pass

Tags: 代码test定义规则aswith语句item
1条回答
网友
1楼 · 发布于 2024-09-28 18:47:34
with open('/dev/null') as x^y|z:
    pass

是的,根据语法,这个代码是有效的!否则您将得到一个解析错误(“无效语法”)。解析器本身可以使用这种语法,它是编译器的另一部分,它检查左侧是否不允许这样的表达式(因为as在语义上等同于赋值)。语法在这里允许expr,而不仅仅是NAME,原因是在as之后可以有任何左值:

^{pr2}$

但是左值没有单独的规则,例如赋值在左边使用testlist,它甚至比expr更宽。在

相关问题 更多 >