日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

python列表实现原理_Python动态类型实现原理及过程解析

發(fā)布時(shí)間:2025/4/5 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python列表实现原理_Python动态类型实现原理及过程解析 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在python中,我們使用變量時(shí),并沒有聲明變量的存在和類型。類型是在運(yùn)行過程中自動(dòng)決定的。

a = 3

python將會(huì)執(zhí)行三步去完成上面這個(gè)請(qǐng)求。

1.創(chuàng)建一個(gè)對(duì)象代表3

2.創(chuàng)建一個(gè)變量a,如果a未創(chuàng)建。

3.將變量a與對(duì)象3相連接。

可以將變量a看作對(duì)象3的一個(gè)引用。

a = 3

b = a

多個(gè)變量可以指向同一個(gè)對(duì)象,在Python中叫共享引用。

Python在每個(gè)對(duì)象中保持了一個(gè)計(jì)數(shù)器,用于記錄當(dāng)前指向該對(duì)象的引用的數(shù)目,一旦計(jì)數(shù)器被設(shè)置為0,該對(duì)象的內(nèi)存空間就會(huì)自動(dòng)回收。

原處修改對(duì)象

由于共享引用的存在,有一些對(duì)象和操作會(huì)在原處修改對(duì)象。

Python中對(duì)象可分為可變類型對(duì)象和不可變類型對(duì)象。

可變對(duì)象:列表,字典

不可變對(duì)象:數(shù)字,字符串,元組

如果變量是不可變對(duì)象的引用,對(duì)變量名的修改不會(huì)影響其他變量,而是直接連接到修改的對(duì)象。

a = 3

b = a

print(a)# 3

print(b)# 3

a = 4

print(a)# 4

print(b)# 3

如果變量是可變對(duì)象的引用,對(duì)變量名的修改會(huì)影響其他變量。

a = [1,2,3]

b = a

print(a)# [1, 2, 3]

print(b)# [1, 2, 3]

a[0] = 4

print(a)# [4, 2, 3]

print(b)# [4, 2, 3]

拷貝

所以當(dāng)你需要?jiǎng)?chuàng)建一個(gè)與原列表一樣同時(shí)又獨(dú)立于原列表的列表時(shí),可以使用拷貝。

下面介紹最常用的兩種。

a = [1,2,3]

b = a[:]

print(a)# [1, 2, 3]

print(b)# [1, 2, 3]

a[0] = 4

print(a)# [4, 2, 3]

print(b)# [1, 2, 3]

此時(shí)b引用的是a所引用的對(duì)象的拷貝。a,b指向不同的內(nèi)存區(qū)域。

在字典和集合中,無法使用這種方法。

可以使用標(biāo)準(zhǔn)庫中的copy模塊

import copy

a = [1,2,[3]]

b = copy.copy(a)# 淺拷貝

c = copy.deepcopy(a)# 深拷貝

a[0] = 0

a[-1].append(4)

print(a)# [0, 2, [3, 4]]

print(b)# [1, 2, [3, 4]]

print(c)# [1, 2, [3]]

淺拷貝中可變對(duì)象中嵌套的可變對(duì)象的引用還是原來的引用。

深拷貝可以拷貝嵌套的對(duì)象結(jié)構(gòu)。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持隨便開發(fā)網(wǎng)。

總結(jié)

以上是生活随笔為你收集整理的python列表实现原理_Python动态类型实现原理及过程解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。