# 装饰器
# x = 12
# def foo():
# x = 123
# print(x)
# print("ok")
#
# print(foo.__name__)
# foo()
# LEGB 查找顺序
# x = 100
# def bar():
# # x = 12
# def inner():
# # x = 0
# print(x)
# inner()
#
# bar()
# def foo():
# print("foo")
#
# bar = foo
# bar()
# 闭包函数:内层函数应用了外层函数的的环境变量,这样的函数叫闭包函数
# def foo():
# x =10
# def inner():
# y = 3
# print(x)
# print(y)
# return inner
#
# func = foo()
# print(func.__closure__)
# x = 100
# func()
#################装饰器
#基于开放封闭原则
#1
# def index():
#
# print("this is index!")
#
# index()
#2
# def index():
#
# print("this is index!")
# def login():
# user = input("user:>>>>>")
# pwd = input("pwd:>>>>>")
# if user == "alex" and pwd == "123":
# print("success!")
# index()
# else:
# print("error!")
# login()
##3
# def index():
# #
# # print("this is index!")
# # def login(func):
# # user = input("user:>>>>>")
# # pwd = input("pwd:>>>>>")
# # if user == "alex" and pwd == "123":
# # print("success!")
# # func()
# # else:
# # print("error!")
# # login(index)
##4
# def login(func):
# def inner():
# user = input("user:>>>>>")
# pwd = input("pwd:>>>>>")
# if user == "alex" and pwd == "123":
# print("success!")
# func()
# else:
# print("error!")
# return inner
#
# @login
# def index():
#
# print("this is index!")
# index()
#######练习
# def timer(func):
# def inner():
# import time
# s1 = time.time()
# func()
# print("cost", time.time() - s1)
# return inner
# @timer
# def add():
# ret = 1
# for i in range(30000000):
# ret += i
# print(ret)
#
# add()
def timer(func):
def inner(x,y):
import time
s1 = time.time()
func(x,y)
print("cost",time.time()-s1)
return inner
@timer
def add(x,y):
print(x+y)
add(1,2)