Day2-----引用、引用做函数参数

一、引用

通过id()来查看变量的引用 

可以将id值认为是内存地址的别名

python数据值的传递用引用 

赋值运算可以改变变量的引用

# 将数据10存储在变量a中 本质:将数据10所在的内存的引用地址保存在变量a中
a=10
# 将变量a中保存的引用地址给b
b=a
# 打印变量a,b 引用中存储的值
print(a,b)
print(id(a),id(b))
print('-'*10)

my_list=[1,2,3] #将列表的引用地址给变量
my_list1=my_list #将变量中存储的引用地址给新 变量
print(my_list1,my_list)
print(id(my_list1),id(my_list))
print('-'*10)

my_list.append(4) #将4的引用保存在列表中
print(my_list,id(my_list))
print(my_list1,id(my_list1))
print('-'*10)

print(f'my_list[2]: {id(my_list[2])}')
my_list[2]=5
print(f'my_list[2]: {id(my_list[2])}')
print(my_list,id(my_list))
print(my_list1,id(my_list1))
print()
print('-'*10)

二、引用做函数参数

函数传参传递的是引用

my_list=[1,2,3]
print(id(my_list))
print('-'*10)

def func1(a):
    a.append(4)
func1(my_list)
print(my_list)
print(id(my_list))
print('-'*10)

# 只有改变全局变量的引用时,才才使用global

def func2():
    my_list.append(5)

func2()
print(my_list)
print(id(my_list))
print('-'*10)

def func3():
    global my_list # 修改全局变量的值
    my_list=[1,2,3]
func3()
print(my_list)
print(id(my_list))
print('-'*10)

def func4(a):
    # 对于+=,类似列表的extend 不会改变变量的引用地址
    a+=a
   # print(a)
b=10 # b是不可变类型
func4(b)
print(b)
func4(my_list)
print(my_list)
print('-'*10)

猜你喜欢

转载自blog.csdn.net/m0_46493223/article/details/126064407