Python的四種裝飾器

2021-09-11 05:15:47 字數 1364 閱讀 6838

裝飾器是乙個函式,它需要接收乙個引數,該引數表示被修飾的函式。

裝飾器是乙個巢狀函式

內部函式是乙個閉包

外部函式接收的是被修飾的函式

不帶引數裝飾器

print(func)

def new_func(*new_argument):

print('before')

result = func(*new_argument)

print('after')

return result * 2

return new_func

def row_func(a, b):

print('hello', a, b)

return a + b

print(row_func(10, 20))

帶引數的裝飾器

def intermediate(func):

def new_func(*args):

print('before', argument)

result = func(*args)

print('after', argument)

return result*2

return new_func

return intermediate

def row_func(a, b):

print('hello', a, b)

return a+b

print(row_func(10, 20)

類不帶引數裝飾器

def __init__(self, b):

self.b = b

def __call__(self, *args):

print('before')

result = self.b(*args)

print('after')

def row_func(a, b):

print('hello',a,b)

return a + b

row_func(10, 20)

類帶引數裝飾器

def __init__(self,a):

self.a = a

def __call__(self,func):

def new_func(*b):

print('before',self.a)

result = func(*b)

print('after', self.a)

return result*2

return new_func

def row_func(a,b):

print('hello', a, b)

return a+b

print(row_func(3,4))

PYTHON的四種作用域

作用域又可以被稱為命名空間,指變數起作用的範圍。python變數作用域可以分為四種,分別為區域性作用域 巢狀作用域 全域性作用域 內建作用域。python的四種所用域及其呼叫順序,當使用某一變數時,首先在函式內部進行搜尋 區域性作用域 l 搜尋不到便到上層函式或類中進行查詢 巢狀作用域 e 再查詢不...

python裝飾器系列 四

先來看乙個不帶引數的裝飾器 1 import time23 deftimeit fn 4def wrap args,kwargs 5 start time.time 6 ret fn args,kwargs 7print time.time start 8return ret9 return wra...

TCP的四種定時器

tcp在建立連線後會啟動四個定時器 重傳計時器 retransmission timer 堅持計時器 persistent timer 保活計時器 keeplive timer 2msl定時器 time wait timer 1 重傳計時器 tcp的傳送方沒有在規定的時間內收到確認就要重傳已傳送的報...