1. 程式人生 > >Python裝飾器主要用法

Python裝飾器主要用法

**kwargs div odi 功能 func erro utf spa 情況

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
__author__ = 人生入戲
user = "admin"
passwd = "123456"
def auth(auth_type):
    #print("auth_type:",auth_type)
    def out_wrapper(func):
        #print("func",func)
        def wrapper(*args,**kwargs):
            #print(args,kwargs)
            if auth_type == "
1": username = input("username:").strip() password = input("password:").strip() if username == user and password == passwd: print("start".center(20,"-")) res = func(*args,**kwargs)#把函數的返回值賦值到res print
("end".center(20,"-")) return res#返回函數的返回值 else: print("error!") elif auth_type =="2": print(2) return wrapper return out_wrapper def index(): print("index ok") @auth(auth_type="1") def home(name):
print("home ok",name) return from home @auth(auth_type="2") def bbs(): print("bbs ok") index() print(home("你好"))#打印home函數的返回值 bbs() ‘‘‘ 裝飾器: 定義:本質是函數,就是為了給其他的函數增加其他功能 原則:不能改變被裝飾函數的源碼和調用方式 ‘‘‘ ‘‘‘ 一、函數等於‘變量‘ 二、高階函數: 1.把一個函數名當作實參傳給另一個函數(在不修改被裝飾函數的代碼的情況下增加其他功能) 2.返回值包含函數名(不修改函數的調用方式) 三、嵌套函數 ‘‘‘ ‘‘‘ 嵌套函數+高階函數=裝飾器 ‘‘‘

Python裝飾器主要用法