值傳遞和引用傳遞
參考地址:http://www.dataguru.cn/thread-489552-1-1.html
python的值傳遞不會改變傳入參數的值,而引用傳遞傳入的是一個地址。有點相似c的指針。在運行完畢之后會改變傳入地址所指的值。
值傳遞類型例如以下:
上面的代碼僅僅是將a的值作為參數傳遞進去。程序運行完之后a的值並未改變
1
2
3
4
5
6
|
a
=
1
def
change_integer(a):
a
=
a
+
1
return
a
print
change_integer(a)
print
a
|
結果:
2
1
[Finished in 0.1s]
引用傳遞的類型例如以下:
1
2
3
4
5
6
7
|
b
=
[
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
b
=
[
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