模組的匯入
包package的使用
模組的分布的安裝
模組分為標準庫模組和使用者自定義模組。
python標準庫提供了作業系統功能、網路通訊、文字處理、檔案處理、數**算等基本的功能。比如:random(隨機數)、math(數**算)、time(時間處理)、file(檔案處理)、os(作業系統互動)、sys(和直譯器互動)等。
便於將乙個任務分解成多個模組,實現團隊協同開發,完成大規模程式;
實現**復用,乙個模組實現後,可以被反覆呼叫;
可維護性增強。
設計api(應用程式介面),進行功能描述;
編碼實現api中描述的功能;
再模組中編寫測試**,並消除全域性**;
使用私有函式實現不被外部客戶端呼叫的模組函式。
import語句的基本語法格式如下:
import 模組名 # 匯入乙個模組
import 模組1,模組2… # 匯入多個模組
import 模組名 as 模組別名 # 匯入模組並使用新名字
import載入的模組分為四個通用類別:
a. 使用python編寫的**
b. 已被編譯為共享庫或dli的c或c++擴充套件
c. 包好一組模組的包
d. 使用c編寫並鏈結到python直譯器的內建模組
import本質上是使用了__import__內建函式。
from…import語句的基本語法格式如下:
from 模組名 import 成員1,成員2,…
from 模組名 import
*# 匯入這個模組中的所有成員
**注意:**應盡量避免第二種寫法,因為可能會覆蓋掉自己定義的名字。
import語句本質上就是呼叫內建函式__import__(),我們可以通過它實現動態匯入。給__import__()動態傳遞不同的引數,就能匯入不同的模組。
s =
"math"
m =__import__
(s)print
(m.pi)
**注意:**一般不建議使用__import__()匯入,其行為在python2和python3中有差異,會導致意外錯誤。如果需要動態匯入可以使用importlib模組。
import importlib
a = importlib.import_module(
"math"
)print
(a.pi)
乙個模組無論匯入多少次,這個模組在整個直譯器程序內有且僅有乙個例項物件。
如果想多次呼叫,使用動態呼叫importlib模組中的reload函式。
將功能類似的模組放到一起,形成了包。包就是乙個必須有__init__.py的資料夾。包下面可以包含模組,也可以包含子包。
若要匯入module_aa.py。方式如下:
import語句
import a.aa.module_aa # 在使用時,必須加完整名稱來引用即a.aa.module_aa.fun_aa()
from…import語句
from a.aa import module_aa # 在使用時,直接使用模組名即module_aa.fun_aa()
from…import語句加強版
from a.aa.module_aa import fun_aa # 直接匯入函式
匯入包的本質其實是「匯入了包的、__init__.py」檔案。
__init__.py的三個核心作用:
如果是子包內的引用,可以按相對位置引入子模組
from..
import module_a # ..表示上級目錄 .表示同級目錄
from
.import module_a2
當匯入某個某塊檔案時,python直譯器一般是按照下述順序進行尋找。
內建模組
當前目錄
程式的主目錄
pythonpath目錄(如果已經設定了pythonpath環境變數)
標準鏈結庫目錄
第三方庫目錄
.pt**件的內容
步驟如下:
為模組檔案建立如下結構的資料夾(資料夾的名字和模組的名字要相同)
在資料夾中建立乙個名為setup.py的檔案,內容如下:
from ditutils.core import setup
setup(
name =
'wyxmath'
#對外模組的名字
version =
'1.0'
#版本號
description =
'這是第乙個對外發布的模組,測試用'
#描述 author =
'wyx'
#作者 author_email =
py_modules =
['wxymath.demo1'
,'wyxmath.demo2'
]# 要發布的模組
)
構建乙個發布檔案。通過終端,cd到模組資料夾c下面,再鍵入命令
python setup.py sdist
在cmd命令列模式下操作,進setup.py所在目錄,鍵入命令:
python setup.py install
python學習第十天
class student count 0 def init self,name,age,address self.name name self.age age self.address address student.count 1 k print k w open a.txt w encodin...
python學習第十天
這兩個習題主要是複習各種符號,並且強調編寫長 時要寫一段執行一段修改一段 主要是學習對列表的進一步操作 ten things stuff ten things.split 定義乙個字串變數 用split 函式以空格為分隔標誌分隔字串使之成為列表 more stuff day night song f...
PYTHON小白 第十天
python小白 第十天 1 函式入門 1.1 理解函式 從函式定義者 實現函式的人 的角度來看,其至少需要想清楚以下3點 函式需要幾個關鍵的需要動態變化的資料,這些資料應該被定義成函式的引數。函式需要傳出幾個重要的資料 就是呼叫該函式的人希望得到的資料 這些資料應該被定義成返回值。函式的內部實現過...