python裝飾器講解筆記

2021-10-08 06:51:31 字數 2284 閱讀 8458

公共** 判斷乙個數是否是質數

def

is_prime

(num)

:if num <2:

return

false

elif num ==2:

return

true

else

:for i in

range(2

, num)

:if num % i ==0:

return

false

return

true

1 不帶有裝飾器
def

prime_nums()

: t1 = time.time(

)for i in

range

(100):

if is_prime(i)

:print

(i) t2 = time.time(

)print

("total time is:"

.format

(t2 - t1)

)prime_nums(

)

2 使用裝飾函式-原函式沒有引數 且 沒有返回值
def

display_time

(func)

:# 引數是接下來將跳轉執行的函式

def():

t1 = time.time(

) func(

) t2 = time.time(

)print

("total time is: {}"

.format

(t2 - t1)

)@display_time

defprime_nums()

:for i in

range

(1000):

if is_prime(i)

:print

(i)prime_nums(

)

3 使用裝飾函式-原函式有返回值
def

display_time

(func)

:# 引數是接下來將跳轉執行的函式

def():

t1 = time.time(

) result = func(

) t2 = time.time(

)print

("total time is: {}"

.format

(t2 - t1)

)return result

@display_time

defprime_nums()

: count =

0for i in

range

(1000):

if is_prime(i)

: count +=

1# print(i)

return count

nums_prime = prime_nums(

)print

("該範圍內有質數個數為:"

, nums_prime)

4 使用裝飾函式-原函式 有引數 且 有返回值
def

display_time

(func)

:# 引數是接下來將跳轉執行的函式

def(

*args)

: t1 = time.time(

) result = func(

*args)

t2 = time.time(

)print

("total time is: "

.format

(t2 - t1)

)return result

@display_time

defprime_nums

(min_num, max_num)

: count =

0for i in

range

(min_num, max_num)

:if is_prime(i)

: count +=

1# print(i)

return count

nums_prime = prime_nums(0,

1000

)print

("該範圍內有質數個數為:"

, nums_prime)

python裝飾器,細緻講解

args,kwargs 命名空間與作用域 命名空間的 巢狀 是在函式定義階段,即檢測語法的時候確定的 函式物件 函式的巢狀定義 閉包函式 傳遞函式的方式 通過引數的形式為函式傳值 通過閉包的方式為函式傳值 什麼是裝飾器 為何要用裝飾器 需求 在不修改index函式源 以及呼叫方式的情況下為其新增統計...

Python 裝飾器筆記

def wrap in tag b fn wrap in tag b 是真正的裝飾器 def return fn return defwrap in tag i fn def return fn return wrap in tag b wrap in tag i defhello return h...

python 裝飾器筆記

python的裝飾器是乙個函式b 用來裝飾另乙個函式a 使a具有b的功能,執行a方法同時 也會執行b方法 這種用法用到 內部函式 函式傳遞 沒有使用 def debug func print 1111 內部函式返回 入參函式 並執行 return func print 2222 裝飾器函式返回 內部...