码迷,mamicode.com
首页 > 编程语言 > 详细

Python装饰器主要用法

时间:2017-08-13 00:16:27      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:star   ==   index   username   turn   str   style   nbsp   end   

#!/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装饰器主要用法

标签:star   ==   index   username   turn   str   style   nbsp   end   

原文地址:http://www.cnblogs.com/my-times/p/7351868.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!