Python中 傳遞值 和 傳遞引用 的區(qū)別解析
更新時間:2018年02月22日 09:24:07 作者:木子昭
這篇文章主要介紹了Python中 傳遞值 與 傳遞引用 的區(qū)別解析,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
對于不可變類型傳遞值(不會影響原數(shù)據(jù))
不可變類型
對于可變類型傳遞引用(會影響原數(shù)據(jù))
不可變類型傳遞引用
python3不可變類型
- Number(數(shù)字)
- String(字符串)
- Tuple (元組)
python3可變類型
- List(列表)
- Dictionary (字典)
- Sets(集合)
參數(shù)傳遞的思考
- 我們聲明的變量名可以看做便簽
- 為變量名賦值的操作可以看做將標簽貼到"值"的表面(值可以是可變類型,和不可變類型)
以鏈表中的節(jié)點對象為例(實例化的節(jié)點對象為不可變類型, 但對象中的屬性是可變的)
鏈表對象
class NodeList(object):
def __init__(self, val):
self.val = val
self.next = None
# 遍歷鏈表
def traverse_nodes(head):
tmp = head
while tmp:
print("節(jié)點id為:", id(tmp), "節(jié)點的值為:", tmp.val, )
tmp = tmp.next
# 創(chuàng)建鏈表
def create_node_list():
head = NodeList(0);
left_p = head
print("頭節(jié)點id:",id(head), "當前節(jié)點id:",id(left_p), "當前節(jié)點值:", left_p.val)
left_p.next = NodeList(1);
left_p = left_p.next
print("頭節(jié)點id:",id(head), "當前節(jié)點id:",id(left_p), "當前節(jié)點值:", left_p.val)
left_p.next = NodeList(2);
left_p = left_p.next
print("頭節(jié)點id:",id(head), "當前節(jié)點id:",id(left_p), "當前節(jié)點值:", left_p.val)
left_p.next = NodeList(3);
left_p = left_p.next
print("頭節(jié)點id:",id(head), "當前節(jié)點id:",id(left_p), "當前節(jié)點值:", left_p.val)
return head
def main():
# 創(chuàng)建鏈表
print("==>創(chuàng)建鏈表函數(shù)中:")
head = create_node_list()
print("==>在遍歷函數(shù)中:")
traverse_nodes(head)
if __name__ == '__main__':
main()
總結
以上所述是小編給大家介紹的Python中 傳遞值 與 傳遞引用 的區(qū)別解析,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

