在Python中分配不同类型的全局变量和局部变量

时间:2017-07-05 10:02:43

标签: python global-variables

在下面的代码中,我了解在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

0 个答案:

没有答案