目錄簡介
匯入模組 示例
匯入時換行
.pyc檔案
__init__.py 示例
批量匯入
tips
迴圈匯入示例
從物理表現上來說:
包:資料夾
模組:檔案
乙個資料夾下包含__init__.py檔案,則成為乙個package 。
__init__.py本身是乙個模組,這個模組的名字就是它的包名。
目錄結構
注意第二種,如果直接使用「import t.c4」,在使用變數a的時候需用t.c4.a。
#方法一
from t import c4
print(c4.a)
#方法二
import t.c4
print(t.c4.a)
import t.c4 as m
print(m.a)
#方法三
from t.c4 import a
print(a)
from t import c4
print(c4.a)
from t.c4 import *
print(a)
tips:在c4.py檔案中加入內建變數__all__ = ['a','c'],可以指定當使用'import *'時可以匯入的元素(這裡只能匯入變數a和c)。
# c4.py
__all__ = ['a','c']
a = 2
b = 3
c = 4
#c8.py
from t.c4 import *
print(a)
print(c)
print(b)
#執行結果:
> python c8.py24
traceback (most recent call last):
file "e:\word\python\code\abc\c8.py", line 8, in print(b)
nameerror: name 'b' is not defined
#方法一
from t.c4 import a, b, \
c#方法二
from t.c4 import (a, b,
c)
python直譯器所編譯的位元組碼檔案,可以提公升python程式的執行效率。
當乙個包被匯入時,__init__.py檔案將首先被自動執行。
在__init__.py檔案裡,可以通過變數 "__all__ = ['c4']" 指定當使用 * 時,可以匯出的模組名(即使用import *時,能匯入的模組名)。
目錄結構:
#__init_.py檔案
__all__=['c4']
#c8.py檔案
from t import *
print(c4.a)
print(c5.e)
#執行結果:
> python c8.py
2traceback (most recent call last):
file "e:\word\python\code\abc\c8.py", line 8, in print(c5.e)
nameerror: name 'c5' is not defined
當需要多次匯入同乙個模組時,可以在__init__檔案中匯入。
目錄結構:
情況1:直接的迴圈匯入
#p1.py
from p2 import p2
p1=2
print(p2)
#p2.py
from p1 import p1
p2=2
執行p1.py檔案會報錯:
原因是執行p1.py檔案時,「from py2」會讓python執行p2.py檔案,而p2.py中又匯入了p1模組,這樣就構成了迴圈匯入。
> python p\p1.py
traceback (most recent call last):
file "e:\word\python\code\abc\p\p1.py", line 1, in from p2 import p2
file "e:\word\python\code\abc\p\p2.py", line 1, in from p1 import p1
file "e:\word\python\code\abc\p\p1.py", line 1, in from p2 import p2
importerror: cannot import name 'p2' from partially initialized module 'p2' (most likely due to a circular import) (e:\word\python\code\abc\p\p2.py)
情況2:間距迴圈匯入
#p1.py
from p2 import p2
p1=2
print(p2)
#p2.py
from p3 import p3
p2=2
#p3.py
from p1 import p1
p3=2
執行p1.py檔案報錯:
> python p\p1.py
traceback (most recent call last):
file "e:\word\python\code\abc\p\p1.py", line 1, in from p2 import p2
file "e:\word\python\code\abc\p\p2.py", line 1, in from p3 import p3
file "e:\word\python\code\abc\p\p3.py", line 1, in from p1 import p1
file "e:\word\python\code\abc\p\p1.py", line 1, in from p2 import p2
importerror: cannot import name 'p2' from partially initialized module 'p2' (most likely due to a circular import) (e:\word\python\code\abc\p\p2.py)
python中的模組和包
乙個模組就是乙個包含python 的檔案。乙個檔案就是乙個模組 1.現在程式開發檔案比較大,都放在乙個檔案中維護不方便,拆分成多個檔案方便維護與管理 2.模組可以增加 的重用率 3.模組可以當作命名空間模組本身就是乙個檔案,所有py 都可以在檔案中直接書寫。不過我們開發共用模組時,最好在模組中書寫以...
python中的模組和包
如下圖所示,python中的模組是指資料夾下的py檔案,a資料夾就可以稱為1個自定義包,但是b檔案件不能稱為乙個包,因為包下要包含 init py檔案。而 init py檔案的作用是什麼那,我感覺主要是簡化import時的長度,我的理解如下,舉個例子,假設我們現在在a資料夾下沒有 init py模組...
python 模組和包 python模組和包
一.模組 python 模組 module 是乙個 python 檔案,以 py 結尾,包含了 python 物件定義和python語句。模組能定義函式,類和變數,模組裡也能包含可執行的 二.匯入模組 1.語法 import模組名from 模組名 import功能名from 模組名 import i...