15 函数回调 模块
生活随笔
收集整理的這篇文章主要介紹了
15 函数回调 模块
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
函數(shù)回調(diào)
提前寫出函數(shù)的調(diào)用,再去考慮函數(shù)體的實現(xiàn)怎么樣提前寫出函數(shù)的調(diào)用:在另一個函數(shù)中寫出函數(shù)的調(diào)用
再去考慮函數(shù)體的實現(xiàn):根據(jù)實際的需求 def my_sleep(sec):import timecurrent_time = time.time()while time.time() - current_time < sec:passdef download(fn=None):print('開始下載')my_sleep(1)data = '下載得到的信息'print('下載完成')if fn: # 如果外界提供了回調(diào)函數(shù)的實現(xiàn)體,再去調(diào)用,否則就只完成默認下載的功能res = fn(data) # 下載成功的回調(diào)函數(shù),具體完成什么事之后決定if res:print('操作成功')return Trueprint('操作失敗')return Falsereturn data # 沒有外界具體操作下載結(jié)果的功能代碼,就將下載結(jié)果直接返回# res = download() # print(res)def download_action(data):print('往文件中寫')with open('1.txt', 'w', encoding='utf-8') as f:f.write(data)return Truereturn Falseres = download(download_action) print(res)# 下載成功后的動作可以多樣化 def download_action1(data):print(data)return True res = download(download_action1) print(res)# 補充: # 自定義sleep def my_sleep(sec):import timecurrent_time = time.time()while time.time() - current_time < sec:pass print(000)
模塊
模塊:一系列功能的集合體定義模塊:創(chuàng)建一個py文件就是一個模塊,該py文件名就是模塊名
使用模塊:在要使用該模塊功能的文件中導入模塊,通過import關鍵字導入模塊名
要求:
1.了解什么是模塊2.為什么要使用模塊
3.import導入模塊:名稱空間
4.起別名:原名與別名
5.from導入方式
6.*的知識點
7.查詢順序
8.自啟文件與模塊的區(qū)別
難點:循環(huán)導入
模塊的四種存在方式: ①
1.使用python編寫的.py文件(任何一個py文件都可以作為模塊)
2.包:一堆py文件的集合體
3.使用C編寫并鏈接到python解釋器的內(nèi)置模塊
4.已被編譯為共享庫或DLL的C或C++擴展
優(yōu)點:②
1.從文件級別組織代碼,是同特性的功能能統(tǒng)一管理
2.可以使用系統(tǒng)或第三方模塊(拿來主義),來提高開發(fā)效率 module.py文件內(nèi)容: # 每一個py文件都是一個模塊,py文件名module就是模塊名 a = 100 # print(a)def b():print(a) # 局部中沒有a,只能從全局或內(nèi)置找# 注:如果自身文件的全局中有,就找自身的,否則就找內(nèi)置,不會找導入它的文件全局中的名字def c():global aa = 300 ---------------------------module.py 內(nèi)容結(jié)束-------------------------------import module # 導入模塊,會編譯執(zhí)行成一個pyc文件,該pyc文件就是該模塊的執(zhí)行文件 # print(module)# 再次導入,module該模塊不會被執(zhí)行了 import module import module import module import module# 導入模塊: import module ③ # 1.編譯執(zhí)行模塊所對應的py文件,形成對應的pyc文件 # 2.產(chǎn)生該模塊自己的全局名稱空間 # 3.在使用該模塊的全局名稱空間中產(chǎn)生一個名字(導入的模塊名) import module aaaaa = module import module a = 888 module.b()module.c()print(aaaaa.a)print(a) # 注:④ # 1.每一個文件都會產(chǎn)生自己的全局名稱空間,且相互不影響 # 2.多次導入,只會編譯執(zhí)行模塊一次,將其加載到內(nèi)存,之后的都是直接對名字的引用
起別名
通過as關鍵字可以給模塊起別名: 模塊名一旦起別名,原模塊名就不能再使用
1.簡化模塊名字
2.統(tǒng)一功能
from 模板名 import 名字1 as 別名1, ..., 名字n as 別名n
# import mmmmmmmmmmmmmmmmmm3 as my_m3 print(my_m3.num) cmd = input('數(shù)據(jù)庫選擇 1:mysql | 2:oracle:') if cmd == '1':import mysql as db# mysql.excuse() else:import oracle as db# oracle.excuse() db.excuse() 在任何地方都可以導入模塊 def fn():global m3import m3 # 就是普通的名字,只是該名字執(zhí)行的是一個py文件(全局名稱空間)print('>>>', m3.num) fn() print(m3.num)
不建議直接導入 *,因為可讀性差,且極容易出現(xiàn)變量重名
模塊中有 名字a
可以使用模塊中的a
a = 20
模塊中的a就被覆蓋了,且在代碼上還不能直接看出
# 一旦起別名,原名字就不能再用
from m5 import aaaaa as a, bbbbb as b, ccccc as c
print(a)
print(b)
print(c)
print("共有邏輯") if __name__ == '__main__':# 所有自執(zhí)行的邏輯print("m6: 我是自執(zhí)行的")a = 10 # 產(chǎn)生的是全局的名字 else:# 所有模塊的邏輯print("m6: 我被導入執(zhí)行的")print(a) # 會報錯:走else就不可能走if,所以a壓根沒產(chǎn)生
模塊的概念:一系列功能的集合體 為什么要使用模塊:使用模塊后的優(yōu)點:1文件角度考慮代碼,2拿來主義,提供開發(fā)效率 py中實現(xiàn)模塊的方式:4種,重點:py文件定義模塊:新建一個py文件:文件名就是模塊名,盡量采用全英文,可以結(jié)合數(shù)字與下劃線 使用模塊:可以不用起別名,但一旦起別名,原名字就不能再使用了-- import 模塊名 as 別名-- from 模塊名 import 名字 as 別名自執(zhí)行文件與模塊區(qū)分:__name__
?
?轉(zhuǎn)載于:https://www.cnblogs.com/zhouyongv5/p/10672904.html
總結(jié)
以上是生活随笔為你收集整理的15 函数回调 模块的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python重命名文件源码
- 下一篇: xttdbopen.sql