当前位置: 首页 > news >正文

南昌加盟网站制作焦作做网站的公司

南昌加盟网站制作,焦作做网站的公司,做购物网站的公司,云南企业装饰器,其实是用到了闭包的原理来进行操作的。 单个装饰器: 以下是一个简单的例子: def outer(func):print("OUTER enter ...")def wrapper(*args, **kwargs):print("调用之前......")result func(*args, **kwargs)p…

装饰器,其实是用到了闭包的原理来进行操作的。

单个装饰器:

以下是一个简单的例子:

def outer(func):print("OUTER enter ...")def wrapper(*args, **kwargs):print("调用之前......")result = func(*args, **kwargs)print("调用之后......")return resultprint("OUTER leave ...")return wrapper@outer
def my_hello():print("hello world")

上面的代码可以运行出结果:

这个时候就会把这个闭包创建出来。

当我们调用my_hello函数的时候,会进行执行wrapper里的代码:

def outer(func):print("OUTER enter ...")def wrapper(*args, **kwargs):print("调用之前......")result = func(*args, **kwargs)print("调用之后......")return resultprint("OUTER leave ...")return wrapper@outer
def my_hello():print("hello world")my_hello()

调用原理:

等价于:

def outer(func):print("OUTER enter ...")def wrapper(*args, **kwargs):print("调用之前......")result = func(*args, **kwargs)print("调用之后......")return resultprint("OUTER leave ...")return wrapper# @outer
def my_hello():print("hello world")my_hello = outer(my_hello)
my_hello()

多重装饰器修饰:

def outer1(func):print("OUTER enter ...1")def wrapper(*args, **kwargs):print("调用之前......1")result = func(*args, **kwargs)print("调用之后......1")return resultprint("OUTER leave ...1")return wrapperdef outer2(func):print("OUTER enter ...2")def wrapper(*args, **kwargs):print("调用之前......2")result = func(*args, **kwargs)print("调用之后......2")return resultprint("OUTER leave ...2")return wrapper@outer1
@outer2
def my_hello():print("hello world")

打印的结果如下:

调用的时候:

def outer1(func):print("OUTER enter ...1")def wrapper(*args, **kwargs):print("调用之前......1")result = func(*args, **kwargs)print("调用之后......1")return resultprint("OUTER leave ...1")return wrapperdef outer2(func):print("OUTER enter ...2")def wrapper(*args, **kwargs):print("调用之前......2")result = func(*args, **kwargs)print("调用之后......2")return resultprint("OUTER leave ...2")return wrapper@outer1
@outer2
def my_hello():print("hello world")my_hello()

运行结果为:

调用原理:

def outer1(func):print("OUTER enter ...1")def wrapper(*args, **kwargs):print("调用之前......1")result = func(*args, **kwargs)print("调用之后......1")return resultprint("OUTER leave ...1")return wrapperdef outer2(func):print("OUTER enter ...2")def wrapper(*args, **kwargs):print("调用之前......2")result = func(*args, **kwargs)print("调用之后......2")return resultprint("OUTER leave ...2")return wrapper# @outer1
# @outer2
def my_hello():print("hello world")my_hello = outer2(my_hello)
my_hello = outer1(my_hello)my_hello()

运行结果如下:

http://www.yayakq.cn/news/924285/

相关文章:

  • 网站建设完成石碣网站仿做
  • 做视频比较好的理财网站做网站一般是怎么盈利
  • 佛山门户网站建设网站广告投放收费标准
  • 网站的营销推广中关村手机网站建设
  • 做论坛网站好吗如何建微信微商城网站
  • 巩义网站建设优化公司网站开发+演讲
  • 打开网站弹出qq对话框能打开各种网站的浏览器
  • 网站技术解决大连关键词
  • 网站域名要钱吗西安比较好的直播公司
  • php 创建网站开发上海传媒公司电话
  • 网站转入备案江西住房和城乡建设厅网站首页
  • wordpress加入弹窗红包如何优化购物网站建设
  • 苏州网站建设布局泰安网络营销
  • 吕子乔做网站吹的语录没有网站也可以做外贸吗
  • 织梦一键更新网站互联网公司招聘信息
  • 如何做网站线上监控网站建设合同要交印花吗
  • 冀州市网站建设做网站的公司利润多少呢
  • 有没有找项目的网站wordpress手机版主题
  • 网站开发通过什么途径接活51ppt模板网免费
  • 邢台企业做网站多少钱个人账号密码网站建设
  • 公司做网站排名aspcms园林绿化工程网站源码
  • 湖州网站制作报价网站 关键字 标签
  • 枣庄企业网站建设合优做网站需要多少钱
  • 建设项目竣工验收公示网站适合美工的网站
  • 制作单位网站单位写材料素材网站
  • 长乐网站建设深圳做网站要多
  • 口碑好的邯郸网站建设旅游网站建设报价单
  • 安徽省住房和城乡建设厅官网网站网站优化外包价格
  • 旅游网站开发的重要性上海网站推广有哪些
  • 郑州做网站的外包公司有哪些安徽建讯建设工程管理有限公司