栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

for循环名称列表表达式合法吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

for循环名称列表表达式合法吗?

这些甚至应该起作用吗?

这是疏忽吗?

没有

这是PyPy也恰好实现的CPython的实现细节吗?

没有


如果可以分配给它,则可以将其用作for循环中的自由变量。

对于这样的问题,值得直接学习语法:

for_stmt ::=  "for" target_list "in" expression_list ":" suite   ["else" ":" suite]

A

target_list
只是一堆
target

target_list     ::=  target ("," target)* [","]target          ::=  identifier          | "(" target_list ")"          | "[" [target_list] "]"          | attributeref          | subscription          | slicing          | "*" target

如果仔细观察,您会发现您给出的所有工作示例都不是反例。请注意,解析器中的错误并不是闻所未闻的,因此,如果您发现合法的语法异常,则可以提交票证-这些错误会很快得到解决。

您给出的最有趣的一对是

(True and obj.d)
(True and obj).d
,它们在逻辑上似乎相同,但解析方式不同:

>>> ast.dump(ast.parse('(True and obj.d)'), annotate_fields=False)"Module([Expr(BoolOp(And(), [Name('True', Load()), Attribute(Name('obj', Load()), 'd', Load())]))])">>> ast.dump(ast.parse('(True and obj).d'), annotate_fields=False)"Module([Expr(Attribute(BoolOp(And(), [Name('True', Load()), Name('obj', Load())]), 'd', Load()))])"

注意:

(True andobj).d
attributeref
语法中的一个。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/652777.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号