Python 值傳遞和引用傳遞


值傳遞和引用傳遞

參考地址:http://www.dataguru.cn/thread-489552-1-1.html

python的值傳遞不會改變傳入參數的值,而引用傳遞傳入的是一個地址。有點相似c的指針。在運行完畢之后會改變傳入地址所指的值。


值傳遞類型例如以下:

上面的代碼僅僅是將a的值作為參數傳遞進去。程序運行完之后a的值並未改變

?
1
2
3
4
5
6
=  1
def  change_integer(a):
     =  +  1
     return  a
print  change_integer(a)
print  a

結果:

2

1

[Finished in 0.1s]



引用傳遞的類型例如以下:

?
1
2
3
4
5
6
7
=  [ 1 2 3 ]
def  change_list(b):
     b[ 0 ] =  b[ 0 ] + 1
     return  b
 
print  change_list(b)
print  b

結果:

[2, 2, 3]

[2, 2, 3]

[Finished in 0.1s]


而這里將b的地址傳遞進去之后,程序運行完之后b的值也隨之改變。



怎樣解決 變量 : 由 引用傳遞 變為 值傳遞??

方案例如以下:

?
1
2
3
4
5
6
7
8
9
import  copy
 
=  [ 1 2 3 ]
def  change_list(b):
     b[ 0 ] =  b[ 0 ] + 1
     return  b
 
print  change_list(copy.deepcopy(b))
print  b

結果:

[2, 2, 3]

[1, 2, 3]

[Finished in 0.1s]


FROM:http://my.oschina.net/repine/blog/601288


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM