python 模块和包
模塊和包:
1.如何自己寫一個模塊
import 模塊名模塊的導入相當于這個模塊所在的文件,模塊的多次導入不會重復執(zhí)行
命名空間
為模塊起別名 as 語句
一行導入多個模塊 : 內(nèi)置 第三方 自定義
from import
命名空間 名字引用模塊中的名字
為導入的名字起別名
一行導入多個名字
*和__all__的關系 : __all__只能約束*
示例文件:自定義模塊my_module.py,文件名my_module.py,模塊名my_module
#my_module.py print('from the my_module.py')money=1000def read1():print('my_module->read1->money',money)def read2():print('my_module->read2 calling read1')read1()def change():global moneymoney=0
模塊可以包含可執(zhí)行的語句和函數(shù)的定義,這些語句的目的是初始化模塊,它們只在模塊名第一次遇到導入import語句時才執(zhí)行(import語句是可以在程序中的任意位置使用的,且針對同一個模塊很import多次,為了防止你重復導入,python的優(yōu)化手段是:第一次導入后就將模塊名加載到內(nèi)存了,后續(xù)的import語句僅是對已經(jīng)加載大內(nèi)存中的模塊對象增加了一次引用,不會重新執(zhí)行模塊內(nèi)的語句),如下?
#demo.py import my_module #只在第一次導入時才執(zhí)行my_module.py內(nèi)代碼,此處的顯式效果是只打印一次#'from the my_module.py',當然其他的頂級代碼也都被執(zhí)行了,只不過沒有顯示效果. import my_module import my_module import my_module''' 執(zhí)行結果: from the my_module.py '''
?
模塊引用中的情況 :
1.模塊的循環(huán)引用 ***
模塊之間不允許循環(huán)引用
2.模塊的加載與修改 *
已經(jīng)被導入的模塊發(fā)生了修改,是不會被感知到的
要想修改的模塊被正在運行中的程序感知到,重啟這個程序
3.把模塊當成腳本執(zhí)行 *****
if __name__ == '__main__':
代碼
寫在這里面的代碼只有這個文件被當做腳本執(zhí)行的時候才執(zhí)行
4.模塊的搜索路徑 *****
和被當做腳本執(zhí)行的文件 同目錄下的模塊,可以被直接導入
除此之外其他路徑下的模塊 在被導入的時候需要自己修改sys.path列表
包:
包是一種通過使用‘.模塊名’來組織python模塊名稱空間的方式。
1. 無論是import形式還是from...import形式,凡是在導入語句中(而不是在使用時)遇到帶點的,都要第一時間提高警覺:這是關于包才有的導入語法
2. 包是目錄級的(文件夾級),文件夾是用來組成py文件(包的本質(zhì)就是一個包含__init__.py文件的目錄)
3. import導入文件時,產(chǎn)生名稱空間中的名字來源于文件,import 包,產(chǎn)生的名稱空間的名字同樣來源于文件,即包下的__init__.py,導入包本質(zhì)就是在導入該文件
強調(diào):
1. 在python3中,即使包下沒有__init__.py文件,import 包仍然不會報錯,而在python2中,包下一定要有該文件,否則import 包報錯
2. 創(chuàng)建包的目的不是為了運行,而是被導入使用,記住,包只是模塊的一種形式而已,包即模塊
?
從包中導入模塊:
import import 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 get get()
?
轉載于:https://www.cnblogs.com/zbw582922417/p/9525644.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結
以上是生活随笔為你收集整理的python 模块和包的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 栈桢
- 下一篇: Python 全栈开发十 socket网