Python 字典的初始化,字典参数引用传递等问题

# 字典初始化方法一: 

1 a = {}
2 b, c = {}, {}
3 d =dict(a="a", b="b")  # b = {"a": "a", "b": "b"}
View Code

 

# 方法二:通过函数全局初始化

 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"}
View Code

 

# 方法三:通过函数返回值初始化

1 def change():
2     a = {"1": "1"}
3     return a
4 
5 a = change()
6 
7 # 打印
8 >> a = {"1": "1"}
View Code

 

# 错误方法:通过引用传参完全修改字典

1 def change(a):   # 传递引用参数,试图用新的字典覆盖原来的字典
2     a = {"1": "1"}
3 
4 a = {}
5 change(a)
6 
7 # 打印
8 >> a = {}    # 没有修改成功
View Code

 

# 这个 bug 找了好久才发现,用 c / c++ 引用传参来理解 python 不完全正确

posted @ 2020-03-25 17:04  deep-thinking  阅读(1968)  评论(0编辑  收藏  举报