在python中,对于全局数字变量、字符串变量、列表变量,函数内部只能调用,却无法改变其值;但是,对于字典变量,函数内部是可以改变全局字典变量的值的!
函数内部对全局变量的修改情况
验证方案
# 全局变量
x = 50
str = 'str'
dt = {'1': 'one'}
li = []
# 自定义函数
def func(x, str, dt, li):
print('局部变量x={}, str={}, dt={}, li={}'.format(x, str, dt, li))
x = 2
str = 'string'
dt['1'] = '1'
li = [1]
print('局部变量x={}, str={}, dt={}, li={}'.format(x, str, dt, li))
# 调用函数,验证全局变量的变化
func(x, str, dt, li)
print('全局常数变量x=', x)
print('全局字符串变量str=', str)
print('全局字典变量dt=', dt)
print('全局列表变量li=', li)
结果证明
通过结果分析,可以得出结论:除了字典变量得到修改,其他的都没有改变!
在实际开发的过程中,可能会遇到在函数内部改变全局列表变量的值的需求,怎么去实现呢?
如何在函数内部修改全局列表变量
其实很简单,我们只需要借用字典结构就可以实现这个功能!
举个简单的栗子
# 全局字典变量,value为列表
dict_list = {1: []}
# 自定义函数
def func(li):
dict_list[1] = li
# 调用函数,验证结果
func([1, 2])
print(dict_list)
func([3, 4])
print(dict_list)
结果证明
例子很简单,却很能说明问题,完全实现了需求!