为什么以不正确的方式为字典赋值不是错误?
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__
),但它仍然是有效的语法。
看看这个简单的字典:
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__
),但它仍然是有效的语法。