鱼C论坛

 找回密码
 立即注册
查看: 2077|回复: 0

[技术交流] 装饰器3decorator

[复制链接]
发表于 2020-9-22 10:35:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
装饰器3decorator:包含参数传递
user, passwd = "Flagon", "123"


def auth(auth_type):
    print('auth func:', auth_type)
    def outer_wrapper(func):
        def wrapper(*args, **lwargs):
            print('wrapper func args:', *args, **lwargs)
            user_name = input('username:').strip()
            password = input('password:').strip()
            if auth_type == 'local':
                if user == user_name and passwd == password:
                    print('\033[31:1mLogin success\033[0m', args)
                    res = func(*args, **lwargs)  # 为了返回函数的值
                    print('User has pass authentication!运行的函数名:', func.__name__)
                    return res
                else:
                    exit('\033[32:1mInvalid username or password\033[0m')
            elif auth_type == 'ldap':
                res = func(*args, **lwargs)  # 为了返回函数的值
                print('User has pass authentication!运行的函数名:', func.__name__)
                print('搞毛线ldap,会不')
                return res
        return wrapper
    return outer_wrapper


def index():
    print('Welcome to be here!')


@auth(auth_type='local')
def home():
    print('Welcom to the homepage!')
    return "From home"


@auth(auth_type='ldap')
def bbs():
    print('Welcom to the bbs!')
    return 'From bbs'


index()
home()
bbs()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-18 16:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表