模块与包(8)
第8章? 復雜程序組織
模塊:
包含函數或者類的Python程序
導入模塊形式:
import 模塊名
import 模塊名 as 新名字???? ?
from 模塊名 import 函數名
from 模塊名 import *??? #導入模塊中的所有代碼
使用import和from導入,調用函數的不同:
使用import導入模塊,模塊名.函數名;使用from導入模塊,直接使用函數名調用
模塊位置
Windows下,默認模塊的查找路徑為Python的安裝目錄及幾個子目錄
Linux下木默認模塊查找路徑為/usr/lib、/usr/lib64及其它們的幾個子目錄下
指定模塊的位置:
import sys
sys.path.append('E:\\module')
Python中被作為模塊引用的.py文件會被編譯成.pyc文件
可以收手工編譯.py文件:
import py_compile
py_compile.compile('a8_2.py')
具有獨立運行能力的模塊
在Python中,如果程序作為模塊被導入,則其__name__屬性被設置為模塊名。
如果程序獨立運行,則其__name__屬性被設置為"__main__".
因此可以通過__name__屬性來判斷程序的運行狀態
編寫程序作為模塊導入,可以將模塊的主要功能以實例的形式放在if語句中,可以方便測試模塊是否能正常運行
形式:
if __name__=='__main__':
m_t_pr()?????????????????????? #調用模塊中的函數
print(name)??????????????????? #訪問模塊中的變量
包:有效避免名字沖突
包其實是包含__init__.py文件的目錄
例:在主程序中調用handle包中的index.py模塊中的hdl函數,可以使用三種方法導入:
import handle.index??????????????????????? 導入后調用handle.index.hdl()
from handle import index?????????????????? 導入后調用index.hdl()
from handle.index import hdl?????????????? 導入后調用hdl()
包中模塊相互引用:
例:
grnd/
??? __init__.py
??? prnta\
??????? __init__.py
??????? suba.py
??????? sub\
??????????? __init__.py
??????????? sona.py
??? prntb
??????? __init__.py
??????? subb.py
??????? subc.py
1.同一包下,subb.py要調用subc.py中代碼:import subc
2.調用子包中的模塊,suba.py調用sona.py中代碼:from .sub import sona
3.調用同級別包中的另一模塊,必須從該包的上級開始導入,subb.py調用suba.py中代碼:from grnd.prnta import subc
標準庫
random
random.random()????????????? #隨機生成0-1中的數
random.randint(0,10)???????????? #隨機生成0-10中的整數
random.choice((1,2,3,4))????????? #列表中隨機返回元素
random.shuffle(alst)????????????? #對列表alst隨機亂序
日期與時間類:calender、datetime、time
time.time()?? #獲取初始時間至現在的秒數
datetime.datetime.now()?? #獲取本地的日期/時間
datetime.datetime.utcnow()?? #獲取當前的UTC日期/時間
轉載于:https://www.cnblogs.com/MUMO/p/5749949.html
總結
- 上一篇: 【20考研】汤家凤:考研数学最好的复习开
- 下一篇: 水系图一般在哪里找得到_天津大学钟澄ES