python-包

weixin_49729516發表於2020-11-29

包就是一個包含有__init__.py檔案的資料夾
包的本質是模組的一種形式,包是用來被當做模組匯入

匯入包發生的三件事(假設匯入mmm包):

1、產生一個名稱空間
2、執行包下的__init__.py檔案,將執行過程中產生的名字都丟到1的名稱空間中
3、在當前執行檔案的名稱空間中拿到一個名字mmm,mmm指向1的名稱空間

mmm檔案下__init__.py

print('執行了。。。。')
x = 1111
y = 2222


def say():
    print('hello')

test.py

import mmm

print(mmm.x)
print(mmm.y)
mmm.say()

結果:

執行了。。。。
1111
2222
hello

關於包相關的匯入語句也分為import和from … import …
兩種,但是無論哪種,無論在什麼位置,在匯入時都必須遵循一個原則:

凡是在匯入時帶點的,點的左邊都必須是一個包,否則非法。
如import 頂級包.子包.子模組,但都必須遵循這個原則。

對於匯入後,在使用時就沒有這種限制了,點的左邊可以是包,模組,函式,類(它們都可以用點的方式呼叫自己的屬性)。

例如:
from a.b.c.d.e.f import xxx
import a.b.c.d.e.f
其中a、b、c、d、e 都必須是包