python裝飾器及簡單例項

2021-10-10 14:08:03 字數 1465 閱讀 9502

#裝飾器

'''加入購物車,付款,修改收穫位址

判斷使用者登入狀態

'''def func(number):

a=100

def inner_func():

nonlocal a

nonlocal number

number+=1

for i in range(number):

a+=1

print('修改後的a的值:',a)

return inner_func

#呼叫func

f=func(5)

f1=func(5)

f1()

f()#位址引用

a=10

b=adef test(): #函式宣告

print('---------------test---------------')

t=test()

print(t)

#裝飾器

'''特點:

1.函式a是作為引數出現的(函式b就接收函式a作為引數)

2.要有閉包的特點

'''#定義乙個裝飾器

def decorate(func):

a=100

print('外層')

func()

print('---------->裝修')

print('---------->1111111')

print('---------->2222222')

print('完成')

'''1.house()是被裝飾函式

2.將被裝飾函式作為引數傳給decorate

3,執行decorate()函式,因為執行了這個函式所以會出現列印外層和完成

'''@decorate

def house():

print('我是毛坯房;;;;;')

#呼叫函式

house()

#登入校驗

import time

def decorate(func):

print('正在校驗中!')

time.sleep(2)

print('校驗完畢!')

#呼叫原函式

func(*x,**n)

@decorate

def f1(n):

print('====f1====',n)

@decorate

def f2(m,n):

print('====f2====',m,n)

f2(2,6)

@decorate

def f3(students,class1='qqq'):

for stu in students:

print(stu,class1)

stu=['1,',34]

f3(stu,class1='454')

python簡單裝飾器 python裝飾器簡單使用

理解裝飾前先理解python閉包的概念 下面是對裝飾器的簡單舉例 實質 是乙個函式 引數 是你要裝飾的函式名 並非函式呼叫 返回 是裝飾完的函式名 inner 作用 為已經存在的物件新增額外的功能 特點 不需要對物件做任何的 上的變動 被裝飾的函式無引數 def decorate func 裝飾器列...

Python 裝飾器例項

偶然看到一篇文章,想到了前幾天的乙個需求,git pull效能不穩,需要加入重試機制,正好這個裝飾器的例項符合這樣的場景。coding utf 8 import time import logging import socket from functools import wraps logging...

Python裝飾器(例項演練)

原理 裝飾器說到底就是閉包的多層運用,內部呼叫外層函式的區域性變數返回給外部函式再在全域性呼叫結果。原則 1.封閉開放原則。2.把寫的基礎函式 別人或者各個模組呼叫 封閉起來不做更改。3.需要增加功能時,可以拓展。語法 加上 符 系統會自動把下面的函式當成引數傳到裝飾器中,從下到上。功能舉例 假如我...