python传参_Python的赋值和传参
1. python中的賦值過程
python賦值語句a = XXX,實(shí)際上就是a保存了XXX的存儲地址。
python對象類型:
不可變類型對象:整數(shù)、小數(shù)、復(fù)數(shù)、字符串、元組
可變類型:列表、字典、集合
不可變類型對象
更改不可變類型對象會改變數(shù)據(jù)存儲的地址,例如:
a = 123
print("a存儲的地址為", id(a))
b = a
print("b存儲的地址為", id(b))
a = 100
print("改變之后a的地址為", id(a))
輸出結(jié)果:
a存儲的地址為 4401750912
b存儲的地址為 4401750912
改變之后a的地址為 4401750176
由此可見,改變前后a的地址發(fā)生了改變,而b所指向的地址沒有發(fā)生改變。
可變類型對象
更改可變類型對象不會改變數(shù)據(jù)存儲的地址,例如:
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]))
輸出結(jié)果:
li存儲的地址為 4338319176
li第一個(gè)元素存儲的地址為 4337198144
li第二個(gè)元素存儲的地址為 4337198176
li第三個(gè)元素存儲的地址為 4337198208
更改li的第一元素之后:
li存儲的地址為 4338319176
li第一個(gè)元素存儲的地址為 4337198432
li第二個(gè)元素存儲的地址為 4337198176
li第三個(gè)元素存儲的地址為 4337198208
由此可見,li的地址沒有發(fā)生改變,但是li的第一個(gè)元素的地址發(fā)生了改變。
2. python中函數(shù)的傳遞參數(shù)過程
函數(shù)的參數(shù)傳遞過程分為兩種情況:
傳值:形參和實(shí)參分配不同的內(nèi)存地址,在調(diào)用時(shí)將實(shí)參的值傳給實(shí)參,在這種情況下,在函數(shù)內(nèi)修改形參并不會影響到實(shí)參。
傳引用:實(shí)參的地址傳遞給形參的過程,函數(shù)內(nèi)修改會直接導(dǎo)致實(shí)參發(fā)生變化。
傳值
傳遞的參數(shù)為不可變類型對象,則傳遞的過程為傳值。
def add(num):
num += 1
x = 1
add(x)
print(x)
輸出結(jié)果:
1
傳引用
傳遞的參數(shù)為可變類型對象,則傳遞的過程為傳引用。
def add(li):
li[0] += 1
x = [1, 2, 3]
add(x)
print(x)
輸出結(jié)果:
[2, 2, 3]
python中函數(shù)的參數(shù)傳遞過程,實(shí)際上就是實(shí)參賦值給形參的過程。
總結(jié)
以上是生活随笔為你收集整理的python传参_Python的赋值和传参的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: osgi框架和spring区别_最新10
- 下一篇: python爬虫机器_Python常用的