python day17 正式學習

2022-07-01 17:45:09 字數 2180 閱讀 9909

目錄注意事項

模組不來總結了,直接去看吧

包是模組的一種形式,包的本質就是乙個含有.py的檔案的資料夾。

模組的第乙個版本只有10個功能,但是未來在擴充套件版本的時候,模組名和用法應該最好不要去修改,但是這只是對使用者友好,而由於版本擴充套件,檔案越來越大,模組設計者對模組的管理、維護會越來越複雜,因此我們可以使用包來擴充套件模組的功能。

匯入模組發生的三件事:

建立乙個包的命名空間

執行py檔案,將執行過程中產生的名字存放於命名空間中。

在當前執行檔案中拿到乙個名字aaa,aaa是指向包的命名空間的

匯入包發生的三件事:

建立乙個包的命名空間

由於包是乙個資料夾,無法執行包,因此執行包下的.py檔案,將執行過程中產生的名字存放於包命名空間中(即包命名空間中存放的名字都是來自於.py)

在當前執行檔案中拿到乙個名字aaa,aaa是指向包的命名空間的

匯入包就是在匯入包下的.py,並且可以使用以下兩種方式匯入:

import ...

from ... import...

如下我們如果需要擴充套件aaa.py模組,需要建立乙個aaa的目錄檔案,並且刪除aaa.py檔案,將aaa.py修改成m1.py和m2.py兩個檔案,讓模組的功能使用方法不改變。

# aaa.py

def func1():

pass

def func2():

pass

def func3():

pass

def func4():

pass

def func5():

pass

def func6():

pass

# m1.py

def func1():

pass

def func2():

pass

def func3():

pass

# m2.py

def func4():

pass

def func5():

pass

def func6():

pass

# run.py

import aaa

aaa.func1()

aaa.func2()

aaa.func3()

aaa.func4()

aaa.func5()

aaa.func6()

# aaa/.py

func1 = 111

func2 = 222

func3 = 333

func4 = 444

func5 = 555

func6 = 666

由於在__init__.py中定義了func1,因此我們可以在run.py檔案中匯入func1,但是這個func1並不是我們想要的func1,因此需要修改__init__.py檔案,又由於執行檔案run.py的環境變數不為aaa,因此直接使用import匯入m1會報錯,因此使用from匯入。

# aaa/.py

from aaa.m1 import func1

from aaa.m2 import func2

# run.py

import aaa

print(aaa.func1())

print(aaa.func2())

絕對匯入:

# aaa/.py

from aaa.m1 import func1

from aaa.m2 import func2

相對匯入:

from .m1 import func1

from .m2 import func2

包內所有的檔案都是被匯入使用的,而不是被直接執行的

包內部模組之間的匯入可以使用絕對匯入(以包的根目錄為基準)與相對匯入(以當前被匯入的模組所在的目錄為基準),推薦使用相對匯入

當檔案是執行檔案時,無法在該檔案內用相對匯入的語法,只有在檔案時被當作模組匯入時,該檔案內才能使用相對匯入的語法

凡是在匯入時帶點的,點的左邊都必須是乙個包,import aaa.bbb.m3.f3錯誤

隨便寫寫Python day17 物件導向作業

定義乙個矩形類,擁有屬性 長 寬 擁有方法 求周長 求面積 class rectangle def init self,length 0,width 0 self.length length self.width width defperimeter self return2 self.length...

python day40 正式學習

目錄執行緒定時器 程序池和執行緒池 import queue q queue.queue q.put 123 q.put 456 q.put 789 print q.get print q.get print q.get q.task done q.task done q.task done q.j...

python day39 正式學習

目錄訊號量 gil全域性直譯器鎖 from threading import thread,lock x 0lock lock def test lock.acquire 鎖住不讓cpu切換 global x for i in range 111100 x 1 lock.release t thre...