首页 > 解决方案 > 我发现冒号的无意义用法:在 python 中,它似乎没有做任何事情,但它不返回语法错误

问题描述

如果您转到 Python 3.8 控制台并键入t:3然后点击Enter,它不会做任何事情。如果您键入任何有效的变量名(无论变量是否已定义),然后是分号,然后是任何表达式,它都不会做任何事情。因此,例如,任何这些都可以工作。

foo:"hello"
bar : 3
baz:['yes']
beans:[35]

或者,

def foo():
    print('hi')
y:foo

这些示例都不会产生任何输出、返回任何错误或分配任何变量。

我知道你可以在任何程序中放置一个类似1==169作为语句的表达式,它不会做任何事情,但这些例子是有意义的。它们是有意义的表达;他们评估某事。

但是这个?foo:"bar"? 为什么我可以这样做?我能想到的冒号的唯一用法是块描述、字典和列表切片。据我所知,这是对分号的错误使用,并且eval()同意我的观点:如果您尝试eval("foo:3")或类似的方式,它将返回语法错误。

这感觉就像一个巨大的谜团。这个说法是什么[variable name] : [expression意思??

Python 如何解释这些[variable name]:[expression]语句之一?它认为分号有什么作用?为什么这不是语法错误?

标签: pythonsyntaxsyntax-errorcolon

解决方案


推荐阅读