Python中的包和模組

2021-10-11 09:23:25 字數 3691 閱讀 2066

目錄簡介

匯入模組 示例

匯入時換行

.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...