'''
模塊的概念:一系列功能的集合體
爲何要使用模塊:使用模塊後的優勢:1文件角度考慮代碼,2拿來主義,提供開發效率
py中實現模塊的方式:4種,重點:py文件
定義模塊:新建一個py文件:文件名就是模塊名,儘可能採用全英文,能夠結合數字與下劃線
使用模塊:能夠不用起別名,但一旦起別名,原名字就不能再使用了
-- import 模塊名 as 別名
-- from 模塊名 import 名字 as 別名
自執行文件與模塊區分:__name__
'''
# 怎麼樣提早寫出函數的調用:在另外一個函數中寫出函數的調用
# 再去考慮函數體的實現:根據實際的需求
def my_sleep(sec):
import time
current_time = time.time()
while time.time() - current_time < sec:
pass
def download(fn=None):
print('開始下載')
my_sleep(1)
data = '下載獲得的信息'
print('下載完成')
if fn: # 若是外界提供了回調函數的實現體,再去調用,不然就只完成默認下載的功能
res = fn(data) # 下載成功的回調函數,具體完成什麼事以後決定
if res:
print('操做成功')
return True
print('操做失敗')
return False
return data # 沒有外界具體操做下載結果的功能代碼,就將下載結果直接返回
# res = download()
# print(res)
def download_action(data):
print('往文件中寫')
with open('1.txt', 'w', encoding='utf-8') as f:
f.write(data)
return True
return False
res = download(download_action)
print(res)
# 下載成功後的動做能夠多樣化
def download_action1(data):
print(data)
return True
res = download(download_action1)
print(res)
'''
模塊:一系列功能的集合體
定義模塊:建立一個py文件就是一個模塊,該py文件名就是模塊名
使用模塊:在要使用模塊的文件中,經過 import 模塊名 來導入模塊
'''
'''
import module
# 1.編譯執行模塊所對應的py文件,造成對應的pyc文件
# 2.產生該模塊本身的全局名稱空間
# 3.在使用該模塊的全局名稱空間中產生一個名字(導入的模塊名)
'''
'''
# 注:
# 1.每個文件都會產生本身的全局名稱空間,且相互不影響
# 2.屢次導入,只會編譯執行模塊一次,將其加載到內存,以後的都是直接對名字的引用
'''
'''
優勢:
1.從文件級別組織代碼,是同特性的功能能統一管理
2.可使用系統或第三方模塊(拿來主義),來提升開發效率
'''
# 經過as關鍵字能夠給模塊起別名: 模塊名一旦起別名,原模塊名就不能再使用
# 1.能夠簡化模塊名字
import mmmmmmmmmmmmmmmmmm3 as my_m3
print(my_m3.num)
# 2.能夠統一功能
cmd = input('數據庫選擇 1:mysql | 2:oracle:')
if cmd == '1':
import mysql as db
# mysql.excuse()
else:
import oracle as db
# oracle.excuse()
db.excuse()
from 模塊名 import 名字1, 名字2, ..., 名字n
# 能夠指名道姓導入模板中全部想導入的名字
from 模塊名 import *
# 導入的是模塊中的__all__這個列表
# 1、系統默認該列表不會收錄_開頭的名字
# 2、能夠自定義__all__列表來規定外界經過*能夠導入的名字
# 不建議直接導入 *,由於可讀性差,且極容易出現變量重名
# 模塊中有 名字a
from 模塊名 import *
# 可使用模塊中的a
a = 20
# 模塊中的a就被覆蓋了,且在代碼上還不能直接看出
# 其別名
from 模板名 import 名字1 as 別名1, ..., 名字n as 別名n
# __name__:
# 1.在py文件做爲模塊被使用時,__name__爲模塊名
# 2.在py文件自執行時,__name__爲字符串 '__main__'
print("共有邏輯")
if __name__ == '__main__':
# 全部自執行的邏輯
print("m6: 我是自執行的")
a = 10 # 產生的是全局的名字
else:
# 全部模塊的邏輯
print("m6: 我被導入執行的")
print(a) # 會報錯:走else就不可能走if,因此a壓根沒產生