python 12 days

python 12 days

一、函数的有用信息

例题一:

举例习题
结果

 例题二:

def wrapper(f):
    def inner(*args, **kwargs):
        print(f.__name__)
        print(f.__doc__)
        """执行函数之前的操作"""
        ret = f(*args, **kwargs)
        """执行函数之后的操作"""
        return ret
    return inner

@wrapper
def login(username, password):
    """
    此函数需要用户名,密码两个参数,完成的是登录的功能。
    :return: True 登录成功。 False登录失败。
    """
    print('登录成功...')
    return True

# print(login.__name__)
# print(login.__doc__)
login(1, 2)
习题
login

    此函数需要用户名,密码两个参数,完成的是登录的功能。
    :return: True 登录成功。 False登录失败。
    
登录成功...
结果

例题三:

from functools import wraps

def wrapper(f):
    @wraps(f)
    def inner(*args, **kwargs):
        """执行函数之前的操作"""
        ret = f(*args, **kwargs)
        """执行函数之后的操作"""
        return ret
    return inner
#
@wrapper
def login(username, password):
    """
    此函数需要用户名,密码两个参数,完成的是登录的功能。
    :return: True 登录成功。 False登录失败。
    """
    a = 2
    c = 4
    print('登录成功...')
    return True

print(login.__name__)
print(login.__doc__)
习题
login

    此函数需要用户名,密码两个参数,完成的是登录的功能。
    :return: True 登录成功。 False登录失败。
结果

二、带参数的装饰器

例题一:

def timer_out(flag1):  #falg1 = flag
    def timer(f):
        def inner(*args, **kwargs):
            if flag1:
                start_time = time.time()
                time.sleep(0.3)
                ret = f(*args, **kwargs)
                end_time = time.time()
                print('执行效率%s' % (end_time-start_time))
                return ret
            else:
                ret = f(*args, **kwargs)
                return ret
        return inner
    return timer
# #
flag = False
#
@timer_out(flag)  # 1,步 timer_out(flag) == timer 2,@与timer结合,变成你熟悉的装饰器 @timer
def func1():
    print(111)

@timer_out(flag)
def func2():
    print(222)

@timer_out(flag)
def func3():
    print(333)
func1()
func2()
func3()
习题
111
222
333
结果

 

原文地址:https://www.cnblogs.com/juxiansheng/p/9041398.html