Python 字典的初始化,字典参数引用传递等问题
# 字典初始化方法一:
1 a = {} 2 b, c = {}, {} 3 d =dict(a="a", b="b") # b = {"a": "a", "b": "b"}
# 方法二:通过函数全局初始化
1 def change(): 2 global a, b, c # 完全修改 a, b, c 要使用 global, 部分修改键值不需要 global 3 a = {"1": "1} 4 b = {"2": "2} 5 c = {"3": "3"} 6 7 a, b, c = {}, {}, {} 8 change() 9 10 # 打印 11 >> a = {"1": "1} 12 >> b = {"2": "2} 13 >> c = {"3": "3"}
# 方法三:通过函数返回值初始化
1 def change(): 2 a = {"1": "1"} 3 return a 4 5 a = change() 6 7 # 打印 8 >> a = {"1": "1"}
# 错误方法:通过引用传参完全修改字典
1 def change(a): # 传递引用参数,试图用新的字典覆盖原来的字典 2 a = {"1": "1"} 3 4 a = {} 5 change(a) 6 7 # 打印 8 >> a = {} # 没有修改成功
# 这个 bug 找了好久才发现,用 c / c++ 引用传参来理解 python 不完全正确