日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)Python教程:atexit—-退出處理器

atexit —- 退出處理器


atexit 模塊定義了清理函數(shù)的注冊和反注冊函數(shù). 被注冊的函數(shù)會在解釋器正常終止時執(zhí)行. atexit 會按照注冊順序的*逆序*執(zhí)行; 如果你注冊了 A, BC, 那么在解釋器終止時會依序執(zhí)行 C, B, A.

注意: 通過該模塊注冊的函數(shù), 在程序被未被 python 捕獲的信號殺死時并不會執(zhí)行, 在檢測到 Python 內(nèi)部致命錯誤以及調(diào)用了 os._exit() 時也不會執(zhí)行.

在 3.7 版更改: 當(dāng)配合 C-API 子解釋器使用時,已注冊函數(shù)是它們所注冊解釋器中的局部對象。

atexit.register(func, \args, **kwargs*)

func 注冊為終止時執(zhí)行的函數(shù). 任何傳給 func 的可選的參數(shù)都應(yīng)當(dāng)作為參數(shù)傳給 register(). 可以多次注冊同樣的函數(shù)及參數(shù).

在正常的程序終止時 (舉例來說, 當(dāng)調(diào)用了 sys.exit() 或是主模塊的執(zhí)行完成時), 所有注冊過的函數(shù)都會以后進先出的順序執(zhí)行. 這樣做是假定更底層的模塊通常會比高層模塊更早引入, 因此需要更晚清理.

如果在 exit 處理句柄執(zhí)行期間引發(fā)了異常,將會打印回溯信息 (除非引發(fā)的是 SystemExit) 并且異常信息會被保存。 在所有 exit 處理句柄都獲得運行機會之后,所引發(fā)的最后一個異常會被重新引發(fā)。

這個函數(shù)返回 func 對象,可以把它當(dāng)作裝飾器使用。

atexit.unregister(func)

func 移出當(dāng)解釋器關(guān)閉時要運行的函數(shù)列表。 如果 func 之前未被注冊則 unregister() 將靜默地不做任何事。 如果 func 已被注冊一次以上,則該函數(shù)每次在 atexit 調(diào)用棧中的出現(xiàn)都將被移除。 當(dāng)取消注冊時會在內(nèi)部使用相等性比較 (==),因而函數(shù)引用不需要具有匹配的標(biāo)識號。

參見

模塊 readline

使用 atexit 讀寫 readline 歷史文件的有用的例子。

atexit 示例

以下簡單例子演示了一個模塊在被導(dǎo)入時如何從文件初始化一個計數(shù)器,并在程序終結(jié)時自動保存計數(shù)器的更新值,此操作不依賴于應(yīng)用在終結(jié)時對此模塊進行顯式調(diào)用。:

 
 
 
 
  1. try:
  2. with open('counterfile') as infile:
  3. _count = int(infile.read())
  4. except FileNotFoundError:
  5. _count = 0
  6. def incrcounter(n):
  7. global _count
  8. _count = _count + n
  9. def savecounter():
  10. with open('counterfile', 'w') as outfile:
  11. outfile.write('%d' % _count)
  12. import atexit
  13. atexit.register(savecounter)

位置和關(guān)鍵字參數(shù)也可傳入 register() 以便傳遞給被調(diào)用的已注冊函數(shù):

 
 
 
 
  1. def goodbye(name, adjective):
  2. print('Goodbye %s, it was %s to meet you.' % (name, adjective))
  3. import atexit
  4. atexit.register(goodbye, 'Donny', 'nice')
  5. # or:
  6. atexit.register(goodbye, adjective='nice', name='Donny')

作為 decorator: 使用:

 
 
 
 
  1. import atexit
  2. @atexit.register
  3. def goodbye():
  4. print('You are now leaving the Python sector.')

只有在函數(shù)不需要任何參數(shù)調(diào)用時才能工作.


文章題目:創(chuàng)新互聯(lián)Python教程:atexit—-退出處理器
文章來源:http://m.5511xx.com/article/dpjpdcg.html