python - 我发现冒号的无意义用法:在 python 中,它似乎没有做任何事情,但它不返回语法错误
问题描述
如果您转到 Python 3.8 控制台并键入t:3
然后点击Enter
,它不会做任何事情。如果您键入任何有效的变量名(无论变量是否已定义),然后是分号,然后是任何表达式,它都不会做任何事情。因此,例如,任何这些都可以工作。
foo:"hello"
bar : 3
baz:['yes']
beans:[35]
或者,
def foo():
print('hi')
y:foo
这些示例都不会产生任何输出、返回任何错误或分配任何变量。
我知道你可以在任何程序中放置一个类似1==1
或69
作为语句的表达式,它不会做任何事情,但这些例子是有意义的。它们是有意义的表达;他们评估某事。
但是这个?foo:"bar"
? 为什么我可以这样做?我能想到的冒号的唯一用法是块描述、字典和列表切片。据我所知,这是对分号的错误使用,并且eval()
同意我的观点:如果您尝试eval("foo:3")
或类似的方式,它将返回语法错误。
这感觉就像一个巨大的谜团。这个说法是什么[variable name] : [expression
意思??
Python 如何解释这些[variable name]:[expression]
语句之一?它认为分号有什么作用?为什么这不是语法错误?
解决方案
推荐阅读
- python - 如何迭代对象列表
- angular - DomSanitizer 在 Angular 4 中清理 Blob Url
- python - OSError:[Errno 22] 参数无效,在 python 中打开文件
- java - 库中的 Bean 注入失败
- ios - 是否可以从同一项目的快速代码中调用目标 C 的 AppDelegate 方法
- wordpress - 有人能告诉我为什么我得到这个 URL 比其他页面更容易被抓取吗?
- jenkins - jenkins 中每个构建的工作空间在哪里
- javascript - 新的 URL id 不起作用,也无法在 IE 中使用本地存储缓存
- jquery - 如何根据复选框值禁用/启用选择
- python - 如何让异步程序按顺序输出?