gpt4 book ai didi

python - 为什么在表达式字段中不允许生成器中未加括号的元组?

转载 作者:行者123 更新时间:2023-11-28 20:18:38 25 4
gpt4 key购买 nike

# why is the following invalid
x = (k, v for k, v in some_dict.items())

# but if we wrap the expression part in parentheses it works
x = ((k, v) for k, v in some_dict.items())

查看文档后,我找不到有关此问题的任何信息。在不允许语法的范围内,什么可能导致解析器混淆?这看起来很奇怪,因为尽管如此,更复杂的语法也能正常工作:

# k, v somehow confuses the parser but this doesn't???
x = ('%s:%s:%s' % (k, v, k) for k, v in some_dict.items())

如果真的有歧义。为什么我们也不需要将 %s:%s:%s % (k, v, k) 也用括号括起来?

最佳答案

x = (k, v for k, v in some_dict.items()):

x = (k, v for k, v in some_dict.items())
x = ((k, v) for k, v in some_dict.items())
x = (k, (v for k, v in some_dict.items()))

需要括号来消除歧义。

x = ('%s:%s:%s' % (k, v, k) for k, v in some_dict.items()) 也需要括号:

x = ('%s:%s:%s' % k, v, k for k, v in some_dict.items())
x = ('%s:%s:%s' % k, (v, k) for k, v in some_dict.items())
x = ('%s:%s:%s' % (k, v, k) for k, v in some_dict.items())

碰巧你已经有足够的括号来解决那里的歧义,使其能够以预期的方式运行。

关于python - 为什么在表达式字段中不允许生成器中未加括号的元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36148502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com