在下面的代码中,我了解在change_my_var()
函数中,my_var
是一个局部变量,因此my_var
的赋值不会更改全局my_var
。< / p>
但是,my_dict
(dict类型)和my_list
(列表类型)不是这种情况。它们会在change_my_dict()
和change_my_list()
运行后发生变化。背后的解释应该是什么?
my_dict = {}
my_list = []
my_var = None
def main():
print('my_dict')
print('before : ', my_dict)
change_my_dict()
print('after : ', my_dict)
print()
print('my_list')
print('before : ', my_list)
change_my_list()
print('after : ', my_list)
print()
print('my_var')
print('before : ', my_var)
change_my_var()
print('after : ', my_var)
def change_my_dict():
my_dict['a'] = 'b'
def change_my_list():
my_list.append('c1')
def change_my_var():
my_var = 10
if __name__ == '__main__':
main()
输出:
my_dict
before : {}
after : {'a': 'b'}
my_list
before : []
after : ['c1']
my_var
before : None
after : None