先看一个代码
x=10
def change_num(x):
x=5
print(x)
change_num(x)
print(x)
输出:
10
10
函数内的x是一个局部变量(local),函数外是全局变量(global),x表示的是一个不可变的整数对象,在函数传参时传的是副本,函数内的操作不会影响原始值
如果想要在函数内更改全局变量所表示的不可变对象可以这样:
x=10
def change_num():
global x #声明x为全局变量
x=5
print(x)
change_num()
print(x)
输出:
10
5
x=["http",'www','com']
def change_list(x):
x[0]="cn"
print(x)
change_list(x)
print(x)
输出:
和你想的结果一样吗?
刚学列表时,应该有看到列表是一个可变对象,在函数参数传值时如果是一个可变参数,则传地址引用,函数内操作影响原始值
分析图
列表
初始化 x=[1,2,3]
操作 x[0]=4
整数
初始化 x=10
操作 x=5
补充:
整数,浮点型,字符串,元组为不可变类型
列表,字典表为可变类型