def foo():
print("foo函数被运行了!")
如果就这么样,foo里的语句是不会被执行的。
程序只是简单的将定义代码块读入内存中。
def foo():
print("我是上面的函数定义!")
def foo():
print("我是下面的函数定义!")
foo()
运行结果:
我是下面的函数定义
def foo():
print("让我们干点啥!")
return "ok"
foo()
def outer(func):
def inner():
print("我是内层函数!")
return inner
def foo():
print("我是原始函数!")
outer(foo)
outer(foo())
# 基础平台部门开发了上百个函数
def f1():
print("业务部门1数据接口......")
def f2():
print("业务部门2数据接口......")
def f3():
print("业务部门3数据接口......")
def f100():
print("业务部门100数据接口......")
#各部门分别调用
f1()
f2()
f3()
f100()
def f1():
#加入认证程序代码
print("业务部门1数据接口......")
def f2():
# 加入认证程序代码
print("业务部门2数据接口......")
def f3():
# 加入认证程序代码
print("业务部门3数据接口......")
def f100():
#加入认证程序代码
print("业务部门100数据接口......")
#各部门分别调用
f1()
f2()
f3()
f100()
def login():
print("认证成功!")
def f1():
login()
print("业务部门1数据接口......")
def f2():
login()
print("业务部门2数据接口......")
def f3():
login()
print("业务部门3数据接口......")
def f100():
login()
print("业务部门100数据接口......")
#各部门分别调用
f1()
f2()
f3()
f100()
#/usr/bin/env python
#coding:utf-8
def outer(func):
def inner():
print("认证成功!")
result = func()
print("日志添加成功")
return result
return inner
@outer
def f1():
print("业务部门1数据接口......")
@outer
def f2():
print("业务部门2数据接口......")
@outer
def f3():
print("业务部门3数据接口......")
@outer
def f100():
print("业务部门100数据接口......")
#各部门分别调用
f1()
f2()
f3()
f100()
def outer(func):
def inner():
print("认证成功!")
result = func()
print("日志添加成功")
return result
return inner
@outer
def f1():
print("业务部门1数据接口......")
def outer(func):
print("认证成功!")
result = func()
print("日志添加成功")
return result
@outer
def f1():
print("业务部门1数据接口......")
# 业务部门并没有开始执行f1函数
执行结果:
认证成功!
业务部门1数据接口......
日志添加成功
def outer(func):
def inner(username):
print("认证成功!")
result = func(username)
print("日志添加成功")
return result
return inner
@outer
def f1(name):
print("%s 正在连接业务部门1数据接口......"%name)
# 调用方法
f1("jack")
def outer(func):
def inner(*args,**kwargs):
print("认证成功!")
result = func(*args,**kwargs)
print("日志添加成功")
return result
return inner
@outer
def f1(name,age):
print("%s 正在连接业务部门1数据接口......"%name)
# 调用方法
f1("jack",18)
def outer1(func):
def inner(*args,**kwargs):
print("认证成功!")
result = func(*args,**kwargs)
print("日志添加成功")
return result
return inner
def outer2(func):
def inner(*args,**kwargs):
print("一条欢迎信息。。。")
result = func(*args,**kwargs)
print("一条欢送信息。。。")
return result
return inner
@outer1
@outer2
def f1(name,age):
print("%s 正在连接业务部门1数据接口......"%name)
# 调用方法
f1("jack",18)
执行结果:
认证成功!
一条欢迎信息。。。
jack 正在连接业务部门1数据接口......
一条欢送信息。。。
日志添加成功
# 认证函数
def auth(request,kargs):
print("认证成功!")
# 日志函数
def log(request,kargs):
print("日志添加成功")
# 装饰器函数。接收两个参数,这两个参数应该是某个函数的名字。
def Filter(auth_func,log_func):
# 第一层封装,f1函数实际上被传递给了main_fuc这个参数
def outer(main_func):
# 第二层封装,auth和log函数的参数值被传递到了这里
def wrapper(request,kargs):
# 下面代码的判断逻辑不重要,重要的是参数的引用和返回值
before_result = auth(request,kargs)
if(before_result != None):
return before_result;
main_result = main_func(request,kargs)
if(main_result != None):
return main_result;
after_result = log(request,kargs)
if(after_result != None):
return after_result;
return wrapper
return outer
# 注意了,这里的装饰器函数有参数哦,它的意思是先执行filter函数
# 然后将filter函数的返回值作为装饰器函数的名字返回到这里,所以,
# 其实这里,Filter(auth,log) = outer , @Filter(auth,log) = @outer
@Filter(auth,log)
def f1(name,age):
print("%s 正在连接业务部门1数据接口......"%name)
# 调用方法
f1("jack",18)
运行结果:
认证成功!
jack 正在连接业务部门1数据接口......
日志添加成功
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有