1、函数即变量
2、高阶函数
3、嵌套函数
高阶函数 + 嵌套函数 =》 装饰器
# Author:dancheng
import time
def timmer(func):
def warpper(*args, **kwargs):
start_time = time.time()
func()
stop_time = time.time()
print('the func run time is %s' %(stop_time - start_time))
return warpper
@timmer #装饰器
def test1():
time.sleep(3)
print('in the test1')
test1()
1、高阶函数
import time
def bar():
time.sleep(3)
print('int the bar')
def test2(func):
print(func)
return func
#print(test2(bar))
t = test2(bar)
t()
2、嵌套函数
def foo():
print('in the foo')
def bar():
print('in the bar')
bar()
foo()
3、装饰器
import time
def timer(func):
def deco():
start_time = time.time()
func()
stop_time = time.time()
print("the func run time is %s" % (stop_time - start_time))
return deco
@timer
def test1():
time.sleep(3)
print('in the test1')
@timer
def test2():
time.sleep(3)
print('in the test2')
test1()
test2()
带参数的1:
import time
def timer(func):
def deco(*args, **kwargs):
start_time = time.time()
func(*args, **kwargs)
stop_time = time.time()
print("the func run time is %s" % (stop_time - start_time))
return deco
@timer
def test3(name, age):
print('My Name Is', name, age)
test3('first', 22)
带参数2:
# Author:dancheng
import time
user, passwd = 'dancheng', '123'
def auth(func):
def wrapper(*args, **kwargs):
username = input('Username:').strip()
password = input('Password:').strip()
if user == username and passwd == password:
print('\033[32;1mUser has passed authentication\033[0m')
res = func(*args,**kwargs)
print('---after authentication---')
return res
else:
exit('\033[31;1mInvalid username or password\033[0m')
return wrapper
def index():
print('welcome to index page')
@auth
def home():
print('welcome to home page')
return 'from home'
@auth
def bbs():
print('welcome to bbs page')
index()
print(home())
bbs()
带参数3:
# Author:dancheng
import time
user, passwd = 'dancheng', '123'
def auth(auth_type):
def outer_wrapper(func):
def wrapper(*args, **kwargs):
if auth_type == 'local':
username = input('Username:').strip()
password = input('Password:').strip()
if user == username and passwd == password:
print('\033[32;1mUser has passed authentication\033[0m')
res = func(*args, **kwargs)
print('---after authentication---')
return res
else:
exit('\033[31;1mInvalid username or password\033[0m')
elif auth_type == 'ldap':
print("ldap")
return wrapper
return outer_wrapper
def index():
print('welcome to index page')
@auth(auth_type='local')
def home():
print('welcome to home page')
return 'from home'
@auth(auth_type='ldap')
def bbs():
print('welcome to bbs page')
index()
print(home())
bbs()