1.2. 製作模組
1.3. 模組定位順序
1.4. `__all__`
二. 包
2.2 匯入包
2.2.2 方法二
python 模組(module),是乙個 python 檔案,以 .py 結尾,包含了 python 物件定義和python語句。
模組能定義函式,類和變數,模組裡也能包含可執行的**。
1.1.2.1 import
# 1. 匯入模組
import 模組名
import 模組名1
, 模組名2..
.# 2. 呼叫功能
模組名.功能名(
)
import math
print
(math.sqrt(9)
)# 3.0
1.1.2.2 from…import…from 模組名 import 功能1
, 功能2
, 功能3..
.
1.1.2.3 from … import *from 模組名 import
*
from math import sqrt
print
(sqrt(9)
)
#### 1.1.2.4 as定義別名
- 語法
```python
# 模組定義別名
import 模組名 as 別名
# 功能定義別名
from 模組名 import 功能 as 別名
# 模組別名
import time as tt
tt.sleep(2)
print
('hello'
)# 功能別名
from time import sleep as sl
sl(2
)print
('hello'
)
在python中,每個python檔案都可以作為乙個模組,模組的名字就是檔案的名字。也就是說自定義模組名必須要符合識別符號命名規則。
新建乙個python檔案,命名為my_module1.py
,並定義testa
函式。
def
testa
(a, b)
:print
(a + b)
在實際開中,當乙個開發人員編寫完乙個模組後,為了讓模組能夠在專案中達到想要的效果,這個開發人員會自行在py檔案中新增一些測試資訊.,例如,在my_module1.py
檔案中新增測試**。
def
testa
(a, b)
:print
(a + b)
testa(1,
1)
此時,無論是當前檔案,還是其他已經匯入了該模組的檔案,在執行的時候都會自動執行testa
函式的呼叫。
解決辦法如下:
def
testa
(a, b)
:print
(a + b)
# 只在當前檔案中呼叫該函式,其他匯入的檔案內不符合該條件,則不執行testa函式呼叫
if __name__ ==
'__main__'
: testa(1,
1)
import my_module1
my_module1.testa(1,
1)
如果使用from .. import ..
或from .. import *
匯入多個模組的時候,且模組內有同名功能。當呼叫這個同名功能的時候,呼叫到的是後面匯入的模組的功能。
# 模組1**
defmy_test
(a, b)
:print
(a + b)
# 模組2**
defmy_test
(a, b)
:print
(a - b)
# 匯入模組和呼叫功能**
from my_module1 import my_test
from my_module2 import my_test
# my_test函式是模組2中的函式
my_test(1,
1)
當匯入乙個模組,python解析器對模組位置的搜尋順序是:
當前目錄
如果不在當前目錄,python則搜尋在shell變數pythonpath下的每個目錄。
如果都找不到,python會察看預設路徑。unix下,預設路徑一般為/usr/local/lib/python/
模組搜尋路徑儲存在system模組的sys.path變數中。變數裡包含當前目錄,pythonpath和由安裝過程決定的預設目錄。
如果乙個模組檔案中有__all__
變數,當使用from *** import *
匯入時,只能匯入這個列表中的元素。
__all__ =
['testa'
]def
testa()
:print
('testa'
)def
testb()
:print
('testb'
)
from my_module1 import
*testa(
)testb(
)# 輸出testa
包將有聯絡的模組組織在一起,即放到同乙個資料夾下,並且在這個資料夾建立乙個名字為__init__.py
檔案,那麼這個資料夾就稱之為包。
[new] — [python package] — 輸入包名 — [ok] — 新建功能模組(有聯絡的模組)。
注意:新建包後,包內部會自動建立__init__.py
檔案,這個檔案控制著包的匯入行為。
新建包mypackage
新建包內模組:my_module1
和my_module2
模組內**如下
# my_module1
print(1
)def
info_print1()
:print
('my_module1'
)
# my_module2
print(2
)def
info_print2()
:print
('my_module2'
)
import 包名.模組名
包名.模組名.目標
2.2.1.1 體驗import my_package.my_module1
my_package.my_module1.info_print1(
)
注意:必須在__init__.py
檔案中新增__all__ =
,控制允許匯入的模組列表。
from 包名 import
*模組名.目標
2.2.2.1 體驗from my_package import
*my_module1.info_print1(
)
Python基礎 模組和包
python 模組 module 是乙個 python 檔案,以 py 結尾,包含了 python 物件定義和python語句。模組能定義函式,類和變數,模組裡也能包含可執行的 1.1.2.1 import 1.匯入模組 import 模組名 import 模組名1 模組名2.2.呼叫功能 模組名....
python基礎 模組和包
目錄 每乙個專案是由乙個或多個模組組成。每乙個以.py結尾的檔案 python源 都是乙個模組 工具包 模組 工具包 中定義的全域性變數,類,函式都是可以提供給呼叫函式使用的工具。模組可以根據功能來進行設計,使得可以更有邏輯的組織 段,以及更好的復用。在日常工作開發中每個人可以負責自己的模組,主程式...
python 模組和包 python模組和包
一.模組 python 模組 module 是乙個 python 檔案,以 py 結尾,包含了 python 物件定義和python語句。模組能定義函式,類和變數,模組裡也能包含可執行的 二.匯入模組 1.語法 import模組名from 模組名 import功能名from 模組名 import i...