當前位置:首頁 » 編程語言 » python拷貝安裝

python拷貝安裝

發布時間: 2022-12-18 09:10:25

A. python對象的拷貝

Python賦值操作或函數參數傳遞,傳遞的永遠是對象引用(即內存地址),而不是對象內容。在Python中一切皆對象,對象又分為可變(mutable)和不可變(immutable)兩種類型。對象拷貝是指在內存中創建新的對象,產生新的內存地址。當頂層對象和它的子元素對象全都是immutable不可變對象時,不存在被拷貝,因為沒有產生新對象。淺拷貝(Shallow Copy),拷貝頂層對象,但不會拷貝內部的子元素對象。深拷貝(Deep Copy),遞歸拷貝頂層對象,以及它內部的子元素對象。

Python中一切皆對象,對象就像一個塑料盒子, 裡面裝的是數據。對象有不同類型,例如布爾型和整型,類型決定了可以對它進行的操作。現實生活中的"陶器"會暗含一些信息(例如它可能很重且易碎,注意不要掉到地上)。

對象的類型還決定了它裝著的數據是允許被修改的變數(可變的mutable)還是不可被修改的常量(不可變的immutable)。你可以把不可變對象想像成一個透明但封閉的盒子:你可以看到裡面裝的數據,但是無法改變它。類似地,可變對象就像一個開著口的盒子,你不僅可以看到裡面的數據,還可以拿出來修改它,但你無法改變這個盒子本身,即你無法改變對象的類型。

對象拷貝是指在內存中創建新的對象,產生新的內存地址。

淺拷貝(Shallow Copy),拷貝頂層對象,但不會拷貝內部的子元素對象。
2.1.1. 頂層是mutable,子元素全是immutable
當頂層對象是mutable可變對象,但是它的子元素對象全都是immutable不可變對象時,如[1, 'world', 2]

① 創建列表對象並賦值給變數a

② 導入模塊,使用.()函數淺拷貝a,並賦值給變數b

③ 修改變數a的子元素a[0] = 3,由於整數是不可變對象,所以並不是修改1變為3,而是更改a[0]指向對象3

當頂層對象是 mutable可變對象 ,但子元素也存在 mutable可變對象 時,如 [1, 2, ['hello','world']]

① 淺拷貝 .() 只拷貝了頂層對象,沒有拷貝子元素對象['hello','world'],即a[2]和b[2]指向同一個列表對象

② 修改a[2][1] = 'china',則b[2][1] = 'china'

當頂層對象是immutable不可變對象,同時它的子元素對象也全都是immutable不可變對象時,如(1, 2, 3)

變數a與變數b指向的是同一個元組對象,沒有拷貝

當頂層對象是immutable不可變對象時,但子元素存在mutable可變對象時,如(1, 2, ['hello','world'])

變數a與變數b指向的是相同的元組對象,並且a[2]與b[2]指向同一個列表,所以修改a[2][1]會影響b[2][1]

深拷貝(Deep Copy),遞歸拷貝頂層對象,以及它內部的子元素對象

當頂層對象是mutable可變對象,但是它的子元素對象全都是immutable不可變對象時,如[1, 'world', 2]

變數a與變數b指向不同的列表對象,修改a[0]只是將列表a的第一個元素重新指向新對象,不會影響b[0]

當頂層對象是mutable可變對象,但子元素也存在mutable可變對象時,如[1, 2, ['hello','world']]

深拷貝既拷貝了頂層對象,又遞歸拷貝了子元素對象,所以a[2]與b[2]指向了兩個不同的列表對象(但是列表對象的子元素初始指定的字元串對象一樣),修改a[2][1] = 'china'後,它重新指向了新的字元串對象(內存地址為140531581905808),不會影響到b[2][1]

當頂層對象是immutable不可變對象,同時它的子元素對象也全都是immutable不可變對象時,如(1, 2, 3)

變數a與變數b指向的是同一個元組對象,不存在拷貝

當頂層對象是immutable不可變對象時,但子元素存在mutable可變對象時,如(1, 2, ['hello','world'])

變數a與變數b指向的是不同的元組對象,同時a[2]與b[2]指向不同的列表對象,所以修改a[2][1]不會影響b[2][1]

使用=是賦值,即將列表對象的引用也賦值給變數b,可以將列表對象想像成一個盒子,變數a相當於這個盒子上的標簽,執行b = a後,相當於再在這個盒子上貼上b標簽,a和b實際上指向的是同一個對象。因此,無論我們是通過a還是通過b來修改列表的內容,其結果都會作用於雙方。

b/c/d都是a的復制,它們都指向了不同的列表對象,但是沒有拷貝子元素,a[2]和b[2]/c[2]/d[2]指向同一個列表, 相當於淺拷貝的效果

使用分片[:]操作,a和b其實是指向同一個元組,而且沒有拷貝子元素,a[2]和b[2]也指向同一個列表,相當於淺拷貝的效果

同列表類似,可以使用字典的()函數或者轉換函數dict()

變數a與變數b/c指向不同的字典,但是沒有拷貝子元素,a['jobs']和b['jobs']/c['jobs']指定同一個列表, 相當於淺拷貝的效果

同列表類似,可以使用集合的()函數或者轉換函數set()

變數a與變數b/c指向不同的集合,而集合的元素必須是hashable,所以修改集合a不會影響到b/c

B. linux安裝python環境

放到自己准備好的文件夾
2.解壓
命令: # tar -zxvf Python-3.8.5.tgz

解壓到准備好的文件內
3.進入解壓後的目錄,編譯安裝。
cd Python-3.8.5
./configure --prefix=/usr/local/python3
可能會See config.log' for more details出現See config.log' for more details錯誤,需要安裝gcc環境
命令: yum install -y gcc

4.安裝:
安裝依賴環境:
首先: sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python-openssl
然後: make
最後: make install
完成 make install實際上是把生成的執行文件拷貝到之前configure命令指定的目錄/usr/local/python3下。
到這里安裝已經結束

5.創建軟鏈接
ln -s /usr/tools/Python3/bin/python3 /usr/tools/python3

6.加入環境變數:
vim /etc/profile
增加: export PATH=$PATH:/usr/tools/Python/bin
:wq 退出
source /etc/profile

總結:完成上面的步驟,就完成了python在linux環境的配置。基礎知識只能滿足你60%的學習需求,剩下的40%就要在實戰中補足,我要做的就是補充你剩下的40%。OK,這次分享就到這里了,有什麼疑問可以隨時留言溝通,互相學習進步!
歡迎加入QQ群:547349021
小提示:群名雖然叫selenium+unittest,但是我們不限任何測試領域的溝通交流和學習,讓我們一起補足缺失的40%吧!

C. 在python 3.5.2中csv模塊怎麼 安裝

1、首先打開cmd,Ctrl + R快捷鍵。

D. python直接安裝後的文件夾能使用嗎

python直接安裝後的文件夾不能使用。如果是直接拷貝.py腳本文件到其他沒裝python的電腦上是不能運行的,如果想把編寫的腳本在其他電腦上直接雙擊運行,可以去下載pyinstaller庫,windows可直接pipinstallpyinstaller安裝,然後在打開命令行,cd到腳本文件的目錄或者在腳本文件的目錄打開cmd,然後輸入pyinstallerF加上腳本文件名(記得加上文件後綴)。

熱點內容
hypixel手機國際版伺服器ip 發布:2025-01-25 09:14:36 瀏覽:598
荒島求生安卓怎麼下載 發布:2025-01-25 09:09:31 瀏覽:209
java中io流 發布:2025-01-25 09:02:54 瀏覽:878
華為高斯資料庫 發布:2025-01-25 08:55:38 瀏覽:31
php是動態語言 發布:2025-01-25 08:45:44 瀏覽:67
伺服器關閉了電腦網路還能用 發布:2025-01-25 08:22:28 瀏覽:588
熱血航線的登錄密碼在哪裡可以看 發布:2025-01-25 08:22:27 瀏覽:770
5系怎麼選擇配置 發布:2025-01-25 08:22:18 瀏覽:843
pythonscipy 發布:2025-01-25 08:18:52 瀏覽:419
恕瑞瑪伺服器地址 發布:2025-01-25 08:18:51 瀏覽:802