首頁 後端開發 Python教學 如何在Python函數執行前後增加額外的行為

如何在Python函數執行前後增加額外的行為

Dec 05, 2016 pm 01:27 PM
python 情境

首先來看一個小程序,這個是計量所花費時間的程序,以下是以往的解決範例

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

from functools import wraps, partial

from time import time

 

def timing(func=None, frequencies=1):

 if func is None:

  # print("+None")

  return partial(timing, frequencies=frequencies)

 # else:

  # print("-None")

 

 @wraps(func)

 def _wrapper(*args, **kwargs):

  start_time = time()

  for t in range(frequencies):

   result = func(*args, **kwargs)

  end_time = time()

  print('运行花费时间:{:.6f}s。'.format(end_time-start_time))

  return result

 

 return _wrapper

 

 

@timing

def run():

 l = []

 for i in range(5000000):

  l.extend([i])

 return len(l)

登入後複製

運作如下:

1

2

3

In [4]: run()

运行花费时间:2.383398s。

Out[4]: 5000000

登入後複製

(喜歡刨根問底的可以去掉註釋,並思考預計會有什麼樣的輸出)。

今天無意間看到了Python的上下文管理器(Context Manager),發現也非常不錯,其實這跟with語句是息息相關的,竟然以前一直未在意。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

from time import time

 

def run2():

 l = []

 for i in range(5000000):

  l.extend([i])

 return len(l)

 

class ElapsedTime():

 def __enter__(self):

  self.start_time = time()

  return self

 

 def __exit__(self, exception_type, exception_value, traceback):

  self.end_time = time()

  print('运行花费时间:{:.6f}s。'.format(self.end_time - self.start_time))

 

with ElapsedTime():

 run2()

登入後複製

總結

初略看了一點官方文檔,上下文管理還是有點多內容的。 Python發展到現在,其實不簡單了。說簡單,只是你自己不夠與時俱進,掌握的都是老式三板斧而已。所以,知識需要不斷更新,才能彌補自己的盲點,以上就是本文的全部內容,希望能大家的學習或工作帶來一定的幫助。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

模板化的優點和缺點有哪些? 模板化的優點和缺點有哪些? May 08, 2024 pm 03:51 PM

模板化的優點和缺點有哪些?

Google AI 為開發者發佈 Gemini 1.5 Pro 和 Gemma 2 Google AI 為開發者發佈 Gemini 1.5 Pro 和 Gemma 2 Jul 01, 2024 am 07:22 AM

Google AI 為開發者發佈 Gemini 1.5 Pro 和 Gemma 2

怎麼下載deepseek 小米 怎麼下載deepseek 小米 Feb 19, 2025 pm 05:27 PM

怎麼下載deepseek 小米

deepseek怎麼問他 deepseek怎麼問他 Feb 19, 2025 pm 04:42 PM

deepseek怎麼問他

NET40是什麼軟體 NET40是什麼軟體 May 10, 2024 am 01:12 AM

NET40是什麼軟體

deepseek該怎麼搜索 deepseek該怎麼搜索 Feb 19, 2025 pm 05:18 PM

deepseek該怎麼搜索

瀏覽器插件是什麼語言寫的 瀏覽器插件是什麼語言寫的 May 08, 2024 pm 09:36 PM

瀏覽器插件是什麼語言寫的

deepseek怎麼編程 deepseek怎麼編程 Feb 19, 2025 pm 05:36 PM

deepseek怎麼編程

See all articles