为什么以不正确的方式为字典赋值不是错误?

Why isn't assigning a value to a dictionary in an incorrect way an error?

看看这个简单的字典:

d = {'name': 'soroush', 'age': 25}

假设我想以错误的方式为 d 分配一个新值:

d['aaa'] : 'bbb' 而不是 d['aaa'] = 'bbb'

Python 在这种情况下什么都不做...如果我打印字典,我会得到与以前相同的内容。我预计会出现语法错误。

它在大型应用程序中是否存在太多错误,python 解释器应该警告而不是跳过?我的第二个问题是,: 会导致它被跳过吗?

d = {'name': 'soroush', 'age': 25}
print(d)
d['aaa']: 'bbb'
print(d)

嗯,这取决于你的 IDE。我使用 VScode 它给了我一个下划线: Type annotation not supported for this type of expression Pylance 如果你想给字典添加一个新值,你可以说:

d = {'name': 'soroush', 'age': 25}
print(d)
d['aaa']= 'bbb'#instead of the colon, add a equal
print(d)

所以总的来说,这取决于你的 IDE 希望这是有道理的。

这不是语法错误或错误,而是一个功能 ;)

Python 3.6 增加了对变量类型注释的支持(详见 PEP 526)。示例:

x: int = 42

这有点多余,因为 python 的类型提示系统可以判断出 42 是一个整数,但还有更多有用的情况,例如如果您想在分配其内容之前声明变量的类型

from typing import Optional

x: Optional[str] = None

所以,如果你这样做

d: 'bbb'

你声明变量d的类型是'bbb',这当然是废话,但你还是可以声明的。你甚至可以在你的终端上验证这一点

>>> __annotations__
{'d': 'bbb'}

现在使用您的实际代码

d['aaa'] : 'bbb'

在这里,您在字典中检索键 'aaa' 的值并为其分配类型。这实际上没有做任何事情(检查 __annotations__),但它仍然是有效的语法。