# __author: "ZXYang"
# date: 2020/11/24
import time
# def fun(n):
# if n == 1:
# return 2
# elif n == 2:
# return 2
# else:
# return fun(n - 1) + fun(n - 2)
#
#
# print(fun(3))
# money = 100
# book = 100
# count = 0
# for a in range(int(money/5)):
# for b in range(int(money/3)):
# for c in range(int(money/0.5)):
# if a * 5 + b * 3 + c * 0.5 <= 100 and a + b + c == 100:
# print("a={0}, b={1}, c={2}".format(a, b, c))
# count += 1
# print(count)
#
#
# money = 100
# book = 100
# count = 0
#
# for a in range(int(money/5)):
# for b in range(int(100/3)):
# for c in range(int(money/0.5)):
# if a * 5 + b * 3 + c * 0.5 <= 100 and a + b + c == 100:
# print(a, b, c)
# count += 1
# print(count)
# li = [11, 21, 4, 55, 5, 3, 12]
# li1 = [i % 2 for i in li if i > 5]
# print(li1)
# li = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
# li1 = [[i-2, i-1, i] for i in li if i % 3 == 0]
# print(li1)
# nu1 = 100
"""
闭包
"""
# def aa(a):
# print("---aa----")
# nu2 = 101
#
# def bb():
# print(nu2)
# print(a)
#
# # bb()
# return bb
#
# nu2 = 1
# # aa()
# bb = aa(11)
# # print(res)
# bb()
"""
装饰器函数(使用闭包)
原功能函数
"""
def aa(fun):
print("111")
def bb(*args, **kwargs):
print("装饰器函数")
setattr(fun, "name", "li")
obj = fun(*args, **kwargs)
return obj
return bb
def cc(func):
def dd(*args, **kwargs):
start_time = time.time()
func(*args, **kwargs)
end_time = time.time()
print("消耗时间:", end_time-start_time)
return dd
# @aa
# def func1():
# print("原功能函数")
# func1()
@cc
def sum1(a, b):
time.sleep(1)
print(a + b)
# sum1(11, 22)
sum1(a=11, b=22)
# def fun11(a, b, c):
# print(a, b, c)
#
#
# tu = (11, 22, 33)
# fun11(*tu)
print("==========================")
"""
类实现装饰器
"""
class Li(object):
def __init__(self, func):
self.func = func
def __call__(self, *args, **kwargs):
print("__call__方法") # 加些扩展功能
return self.func(*args, **kwargs) # 返回类创建的对象(类用作装饰器时)
# a = aaa()
# a()
# a.fcun111()
# 类装饰 函数
# @Li
# def add_num(a, b):
# print("add_num")
#
#
# add_num(11, 22)
# @aa
@Li # 类装饰器 装饰类
class Hero:
def func003(self):
print("==")
a = Hero()
# print(a.name)
a.func003()