模組和包:
1.如何自己寫乙個模組
import 模組名模組的匯入相當於這個模組所在的檔案,模組的多次匯入不會重複執行
命名空間
為模組起別名 as 語句
一行匯入多個模組 : 內建 第三方 自定義
from import
命名空間 名字引用模組中的名字
為匯入的名字起別名
一行匯入多個名字
*和__all__的關係 : __all__只能約束*
示例檔案:自定義模組my_module.py,檔名my_module.py,模組名my_module
#my_module.py
print('
from the my_module.py')
money=1000
defread1():
print('
my_module->read1->money
',money)
defread2():
print('
my_module->read2 calling read1')
read1()
defchange():
global
money
money=0
模組可以包含可執行的語句和函式的定義,這些語句的目的是初始化模組,它們只在模組名第一次遇到匯入import語句時才執行(import語句是可以在程式中的任意位置使用的,且針對同乙個模組很import多次,為了防止你重複匯入,python的優化手段是:第一次匯入後就將模組名載入到記憶體了,後續的import語句僅是對已經載入大記憶體中的模組物件增加了一次引用,不會重新執行模組內的語句),如下
#demo.py
import my_module #
只在第一次匯入時才執行my_module.py內**,此處的顯式效果是只列印一次
#'from the my_module.py',當然其他的頂級**也都被執行了,只不過沒有顯示效果.
import
my_module
import
my_module
import
my_module
'''執行結果:
from the my_module.py
'''
模組引用中的情況 :1. 無論是import形式還是from...import形式,凡是在匯入語句中(而不是在使用時)遇到帶點的,都要第一時間提高警覺:這是關於包才有的匯入語法1.模組的迴圈引用 ***
模組之間不允許迴圈引用
2.模組的載入與修改 *
已經被匯入的模組發生了修改,是不會被感知到的
要想修改的模組被正在執行中的程式感知到,重啟這個程式
3.把模組當成指令碼執行 *****
if __name__ == '__main__':
**寫在這裡面的**只有這個檔案被當做指令碼執行的時候才執行
4.模組的搜尋路徑 *****
和被當做指令碼執行的檔案 同目錄下的模組,可以被直接匯入
除此之外其他路徑下的模組 在被匯入的時候需要自己修改sys.path列表
包:包是一種通過使用『.模組名』來組織python模組命名空間的方式。
2. 包是目錄級的(資料夾級),資料夾是用來組成py檔案(包的本質就是乙個包含__init__.py檔案的目錄)
3. import匯入檔案時,產生命名空間中的名字**於檔案,import 包,產生的命名空間的名字同樣**於檔案,即包下的__init__.py,匯入包本質就是在匯入該檔案
強調:1. 在python3中,即使包下沒有__init__.py檔案,import 包仍然不會報錯,而在python2中,包下一定要有該檔案,否則import 包報錯
2. 建立包的目的不是為了執行,而是被匯入使用,記住,包只是模組的一種形式而已,包即模組
從包中匯入模組:
importimport
glance.api.policy
glance.api.policy.get()
import
glance.api.policy as policy
policy.get()
from
import
from glance.api import
policy
policy.get()
from glance.api.policy import
getget()
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...