公共** 判斷乙個數是否是質數
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 裝飾器函式返回 內部...