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

2022-09-28 20:51:25 字數 1556 閱讀 2861

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

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('執行花費時間: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)

執行如下:

in [4]: run()

執行花費時間:2.383398s。

out[4]: 5000000

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

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

from time import time

def run2(程式設計客棧):

l =

for i in range(5000000):

l.extend([i])

return len(l)

class elapsedtime():

def __enter__(self):

xzmjyzxbpr self.start_time = time()

return self

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

self.end_time = time()

print('執行花費時間:s。'.format(self.end_time - self.start_time))

with elapsedtime():

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

本文標題: 如何在python函式執行前後增加額外的行為

本文位址:

C C main函式執行前後還會發生什麼

在c c 語言執行過程中是不是所有的動作都由main 函式引起,來看下面的 include class a a a a int main 這段 很簡單,但是最終是不是只是列印了this is main這句話,顯然不是,實際的結果是按照下面順序的三句話 this is constructor this...

C 在main 函式執行前,後執行了哪些操作

設定棧指標 初始化static靜態和global全域性變數,即data段的內容 將未初始化部分的全域性變數賦初值 數值型short,int,long等為0,bool為false,指標為null,等等,即.bss段的內容 全域性物件初始化,在main之前呼叫建構函式 將main函式的引數,argc,a...

linux 程式執行前後臺切換

shell支援作用控制,有以下命令 1.command 讓程序在後台執行 2.jobs 檢視後台執行的程序 3.fg n 讓後台執行的程序n到前台來 4.bg n 讓程序n到後台去 ps n 為jobs檢視到的程序編號.fg bg jobs ctrl z都是跟系統任務有關的,雖然現在基本上不怎麼需要...