我正在研究 Python 中字典的使用,我对必须用来将键与值分开的符号以及键的“”感到越来越困惑。
通常,我会这样写:
user = {"name": "John", "surname": "Doe", "age": 34, "gender": "Male"}
但是,为什么我要写:
user = dict(name="Jack")
...在键(不写“”)和值之间有一个“=”?我还有一个例子:
def favourite_colour (**args):
for name, colour in args.items():
print (f"{person}'s favourite colour is {colour}.")
favourite_colour(Jude="green", Giulio="orange", Chiara="black")
请问有逻辑解释吗?
请您参考如下方法:
前者是字典,后者是函数的关键字参数。我看不出它们有何不同。
这就像问为什么 float 除法要用/,整数除法要用//。您要求 Python 做两件不同的事情,因此您需要两种不同的语法。
请注意,您也可以将 foo(bar=baz) 调用为 foo(**{bar: baz}),它提供字典作为一组关键字foo 的参数。
另请注意,: 在函数签名中已经具有意义——它是一个函数注释。
def foo(bar: "this is a bar object"):
return raise_the(bar)
您可以将字典语法作为 {key=value, key2=value2} 的参数,但是 = 运算符意味着赋值,而您并不是真正在赋值键的值,您只是将它关联到此映射中的键。我觉得不合适。
