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



看看这个简单的字典:

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

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

d['aaa'] : 'bbb'代替d['aaa'] = 'bbb'

Python在这种情况下什么都不做。。。如果我打印字典,我得到的内容和以前一样。我本以为会出现语法错误。

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

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

这不是语法错误或bug,而是一个特性;(

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__(,但它仍然是有效的语法。

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

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

所以总的来说,这取决于您的IDE希望这是有意义的。

最新更新