python高階01 包 模組 賦值 拷貝

2021-10-23 04:14:26 字數 3833 閱讀 3474

(1).什麼是包(package)?

在python中,用來包裹模組的資料夾,資料夾是可以當成包使用的,包並不是資料夾!!

在python中,如果乙個資料夾存在__init__.py這個模組檔案的話,這個資料夾就是包,init.py一般用來初始化檔案!

(2).什麼是模組(module)?

xx.py檔案,儲存是要執行或者使用**,以及一些自定義的模組

(2).常見的導包方式?

格式一:import package.module

格式二:import package.module as alias

格式三:from . import module (. 當前 或者 .

. 上級)

格式四:from package import module as alias

格式五:from package import * #表示匯入包的所有模組

注:有時候,使用一些第三方模組,會發現不能使用*匯入模組,這時只有在__all__屬性申明過的模組才能使用萬用字元匯入所有模組

is判斷兩個變數的記憶體位址,==判斷兩個變數的值

注:python記憶體中,資料區儲存的常量儲存固定的不變的值和一些緩衝資料。python官方(在pycharm可能範圍大)做了乙個小整型緩衝區(也會有字串緩衝區),放的是**-5到256**的這些值,當變數賦值這些數時,直接拿來呼叫小整形緩衝區裡的這些值,比較方便。

>>

> a=

255 #python記憶體存在小整型緩衝區,範圍是-5~

256,所以在賦值時,就會直接呼叫這些值,所以兩個變數的記憶體位址相同

>>

> b=

255>>

> a is b

true

>>

> a=

256>>

> b=

256>>

> a is b

true

>>

> a=

257 #超過那個範圍記憶體位址就不同

>>

> b=

257>>

> a is b

false

>>

> a=

10>>

> b=a #位址傳遞

>>

> a is b #is判斷兩個變數的記憶體位址

true

1.淺拷貝:只拷貝第一層物件,子物件藕斷絲連

第一種方法:列表中的copy

()方法

>>

> ls=[1

,2,3

]>>

> ls1=ls.

copy()

>>

> ls is ls1

false

>>

> ls.(4

)>>

> ls [1

,2,3

,4]>>

> ls1 [1

,2,3

]若不是列表物件,該怎麼實現淺拷貝呢?這個時候就需要copy模組

第二種方法:copy模組的copy

()方法

>>

> import copy

>>

>

dir(copy)

['copy'

,'deepcopy'

]>>

> ls=[1

,2,3

]>>

> ls1=copy.

copy

(ls)

>>

> ls is ls1

false

>>

> ls.(4

)>>

> ls [1

,2,3

,4]>>

> ls1 [1

,2,3

]>>

> ls is ls1

false

注:淺拷貝並不是把物件完整的拷貝,而是只拷貝了第一層物件,如果物件中儲存子物件,那麼子物件還是藕斷絲連

>>

> ls=[1

,2,[

1,2]

]>>

> ls1=ls.

copy()

>>

> ls[2]

.(3)

>>

> ls [1

,2,[

1,2,

3]]>>

> ls1 [1

,2,[

1,2,

3]]>>

> ls is ls1

false

2.深拷貝:使用遞迴的方式拷貝,兩個物件沒有任何關係

方法:用copy模組的deepcopy

()方法

>>

> import copy

>>

> ls=[1

,2,[

1,2]

]>>

> ls1=copy.

deepcopy

(ls)

>>

> ls[2]

.(3)

>>

> ls [1

,2,[

1,2,

3]]>>

> ls1 [1

,2,[

1,2]

]>>

> ls is ls1

false

3.淺拷貝與深拷貝的特殊情況:元組、字串是不可變型別,所以深淺拷貝後,永遠只有乙份記憶體,此外還有一些特殊情況:如元組裡有乙個子物件時可變型別(列表)

>>

> import copy

>>

> t=(1

,2,[

1,2]

)>>

> t1=copy.

copy

(t) #淺拷貝只拷貝第一層物件,則代表t就是個元組

>>

> t is t1

true

>>

> t2=copy.

deepcopy

(t) #深拷貝遞迴拷貝

>>

> t is t2

false

>>

> t[2]

.(3)

>>

> t (1

,2,[

1,2,

3])>>

> t1 (1

,2,[

1,2,

3])>>

> t2 (1

,2,[

1,2]

)>>

> t is t1

true

>> t is t2

false

4.怎麼選擇什麼時候使用淺拷貝、什麼時候使用深拷貝?

1、需要將當前物件拷貝的時候,一般建議拷貝為淺拷貝,(效率高,記憶體占有少

2、如果說,就是需要完全分離,請使用深拷貝

Python 高階 模組 包

命名空間和變數作用域的比較 變數名的查詢覆蓋 匯入模組 模組匯入的特性 模組內建函式 package 包 預設的模組搜尋路徑在 python 解析器編譯安裝時被指定,我們可以通過 sys 模組來檢視和修改它 in 4 sys.path out 4 usr bin usr lib python2.7 ...

高階python 包 和模組

包 簡單而言,包就是資料夾,用來存放檔案。模組 檔案或檔案的集合 python中 和is 的區別 主要 判斷的是兩個變數的值 is 用來判斷兩個變數的記憶體位址 引用傳遞僅僅是資料的引用 is 主要 呼叫的是的是 ip位址 深淺拷貝 1 匯入 copy import copy b copy。copy...

Python高階二 模組和包

同名模組 放入不同包中 import package1.file1 如何區分包和普通目錄 包下面有乙個 init py檔案 匯入模組 from package import file1 或者 import package.file from os import path print path.isd...