在介紹python包之前,先來了解下模組,乙個.py檔案就是乙個模組(與node.js模組概念類似,乙個.js檔案就是乙個模組),模組裡邊可定義變數、函式和類。
在python中模組分為自定義模組、內建模組、第三方模組,這篇文章我們著重聊下模組的引入。
在python中引入模組有兩種方式:
package 資料夾
| |
| |
| |
| | ——————>m2.py ----> variable_name = 'm2'
| | ——————>m3.py ----> variable_name = 'm3'||
m1.py
# 引入模組
improt package.m2,package.m3
print(package.m2.variable_name) # 'm2'
print(package.m3.variable_name) # 'm3'
上邊**,package資料夾與m1.py檔案同級,package資料夾下有m2.py和m3.py檔案,m2和m3檔案中分別有乙個變數,m1通過improt關鍵字引入m2和m3模組 。
有幾個注意的地方:
1、使用import匯入模組,如果不是同級模組,則需要寫上 資料夾名 . 模組名
2、使用模組中的變數時,寫法:資料夾名 . variable_name
3、如果模組巢狀很深,可以使用as作為路徑的別名, alias . variable_name
import package1.package2.package3.m4 as m
# 使用m4中的變數
m.variable_name
from package.m4 import variable_name
#使用模組變數時,直接列印即可,無需寫路徑
print(variable_name)
(1)可以使用星號匯入所有的變數
form module.m4 import *
#使用模組中的變數
print(variable_name1,variable_name2, ··· ···)
(2)也可以使用模組中的內建變數_ _all_ _來控制 * (也就是控制 * ,匯入指定的變數)
# m4 模組
__all__ = ['a','b']
a = 1
b = 2
c = 3
form module.m4 import *
#使用模組中的變數
print(a) # 1
print(b) # 2
print(c) # 報錯 c is not define
( 3 ) 多個變數的匯入,可以使用括號
form module import (a,b,c,d,e ··· ···)
#使用模組中的變數
print(a,b,c,d ··· ···)
(4)也可以直接引入包
form package_name import m1
#使用模組中的變數
print(m1.variable_name)
在python中,包就是乙個資料夾,包裡邊有模組(.py檔案),模組裡邊有類,而類裡邊含有函式與變數。。。當我們建立乙個python包的時候,包裡邊必須含有乙個_ _ init_ _.py檔案,否則建立的資料夾與普通資料夾沒區別;在每次執行引入的模組的時候,總會先執行_ _ init_ _.py檔案,所以在實際開發中通常會把__ init__.py檔案當做模組的初始化來用。。。在這說下,__init__.py這個模組的名字就是包的名字(下邊__init__.py模組的名字是package)
package 資料夾
| |
| |
| | ——————>__init__.py --> print('lxc')
| | ——————>m2.py --> variable_name = 'm2'
| | ——————>m3.py --> variable_name = 'm3'||
m1.py
# 引入模組
form package.m2 import variable_name
print(variable_name)
# 列印順序是:
# 'lxc'
# 'm2'
上邊**,我們在檔案m1中引入的package下的m2模組,結果列印順序:先列印 『 lxc 』 後列印 『m2』,證明在執行引入的模組的時候,總會先執行__ init __ .py檔案。
上邊截圖,我們在m.py檔案中引入py_package包下的所有模組,在__init__.py中我們用內建變數__all__來指定引入m1模組,結果列印m2沒被定義,因為m2沒有被引入!!!
當然如果不用 * 號 我們手動的引入模組,在__init__.py來控制模組的引入,是無效的。
假設有上百個檔案需要匯入相同的包,你當然不會去挨個檔案引入相同的模組,這時可以把引入模組的事讓__init__.py檔案去做:
在__init__.py檔案中,引入模組:
# 引入python內建模組
import os
import datatime
import sys
在需要執行模組的檔案中,只需要引入包名(包的名子就是__init__.py的名字)即可:
# 引用包
import py_package
# 使用包中的模組
print(py_package.os)
print(py_package.datetime)
print(py_package.sys) # 1
注意:包和模組不會重複被匯入,如果重複匯入只會執行一次以上就是模組和包的大致用法,有不足之處,希望指正! python 模組和包 python模組和包
一.模組 python 模組 module 是乙個 python 檔案,以 py 結尾,包含了 python 物件定義和python語句。模組能定義函式,類和變數,模組裡也能包含可執行的 二.匯入模組 1.語法 import模組名from 模組名 import功能名from 模組名 import i...
Python 模組和包
包 模組的一種組織結構 乙個包由多個模組構成,即包含多個.py檔案 1匯入包的幾種形式 1 import module 將module模組中屬性列表的所有屬性匯入執行環境,使用時需要新增模組名稱,例如 module.func 2 from module import attrname,fucnnam...
python 模組和包
1.內建模組 本身就帶有的庫,就叫做python的內建的庫。模組 庫 一些常見的內建模組 os 和作業系統相關 os.path sys 和系統相關 sys.path re 正規表示式 2.第三方模組 非python本身自帶的庫,就是所謂的第三方的庫 3.模組的匯入 import as yy from...