Python的赋值和传参

2020-03-31  本文已影响0人  一个扫地的垃圾

1. python中的赋值过程

python赋值语句a = XXX,实际上就是a保存了XXX的存储地址。

python对象类型:

不可变类型对象

更改不可变类型对象会改变数据存储的地址,例如:

a = 123
print("a存储的地址为", id(a))
b = a
print("b存储的地址为", id(b))
a = 100
print("改变之后a的地址为", id(a))

输出结果:

a存储的地址为 4401750912
b存储的地址为 4401750912
改变之后a的地址为 4401750176

由此可见,改变前后a的地址发生了改变,而b所指向的地址没有发生改变。

可变类型对象

更改可变类型对象不会改变数据存储的地址,例如:

li = [1, 2, 3]
print(id(li))
print(id(li[0]))
print(id(li[1]))
print(id(li[2]))
li[0] = 10
print("")
print(id(li))
print(id(li[0]))
print(id(li[1]))
print(id(li[2]))

输出结果:

li存储的地址为 4338319176
li第一个元素存储的地址为 4337198144
li第二个元素存储的地址为 4337198176
li第三个元素存储的地址为 4337198208
更改li的第一元素之后:
li存储的地址为 4338319176
li第一个元素存储的地址为 4337198432
li第二个元素存储的地址为 4337198176
li第三个元素存储的地址为 4337198208

由此可见,li的地址没有发生改变,但是li的第一个元素的地址发生了改变。

2. python中函数的传递参数过程

函数的参数传递过程分为两种情况:

传值

传递的参数为不可变类型对象,则传递的过程为传值

def add(num):
    num += 1

x = 1
add(x)
print(x)

输出结果:

1

传引用

传递的参数为可变类型对象,则传递的过程为传引用

def add(li):
    li[0] += 1

x = [1, 2, 3]
add(x)
print(x)

输出结果:

[2, 2, 3]

python中函数的参数传递过程,实际上就是实参赋值给形参的过程。

上一篇下一篇

猜你喜欢

热点阅读