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

武汉哪一家做网站专业微信公众号小程序怎么做

武汉哪一家做网站专业,微信公众号小程序怎么做,项目管理网站开发,电商网站新闻怎么做的分类目录:《系统学习Python》总目录 如果我们没有在使用Python3.X并因此无法利用一条nonlocal语句,或者我们希望代码具有可移植性,能在Python3.X和Python2.X上同时工作一一我们仍然能够针对某些可改变的状态使用函数属性来避免使用全局变量和…

分类目录:《系统学习Python》总目录


如果我们没有在使用Python3.X并因此无法利用一条nonlocal语句,或者我们希望代码具有可移植性,能在Python3.X和Python2.X上同时工作一一我们仍然能够针对某些可改变的状态使用函数属性来避免使用全局变量和类。在Python2.1之后的所有Python版本中,我们可以把任意属性分配给函数,并使函数附带上它们,这使用func.attr=value就可以实现。因为工厂函数在每一次调用时都创建一个新函数,所以其属性就成为了与调用息息相关的状态。此外,你只需针对必须改变的状态变量使用这一技巧;外层作用域引用仍被保留并且正常地工作。

在我们的示例中,可以直接对状态使用wrapper.calls。如下的代码与前面的nonlocal版本运行后是一样的,因为每个被装饰函数都再次拥有了自己的计数器,但是这个版本也可以在Python2.X下运行:

def tracer(func):def wrapper(*args, **kwargs):wrapper.calls += 1print('call %s to %s' % (wrapper.calls, func.__name__))return func(*args, **kwargs)wrapper.calls = 0return wrapper@tracer
def spam(a, b, c):print(a + b + c)@tracer
def eggs(s, y):print(x ** y)span(1, 2, 3)
span(a=4, b=5, c=6)
eggs(2, 16)
eggs(4, y=4)

因为名称wrapper保持在外层tracer函数的作用域中,这种方法才有效。当我们随后递增wrapper.calls时,并不是修改名称wapper本身,因此不需要任何nonlocal声明。这一版本在任一Python系列中都可运行。

这种方案几乎作为一个脚注来介绍,因为它可能比Python3.X中的nonlocal要晦涩难解得多,并且可能留待其他方案无济于事的情况下使用更好。然而,函数属性也拥有足够多的优点。其中之一是它们允许从装饰器代码的外部访问保存的状态;nonlocal只能从嵌套函数自身的内部看到,可是函数属性则有更广泛的可见性。另外一个优点就是,它们的可移植性要强得多;这一方案在python2.X中也能工作,因而是版本中立的。

由于可更改的状态与使用上下文相关联,因此它们等同于外层作用域的非局部变量。照常,从多种工具中进行选是编程任务的天生一部分。由于装饰器往往意味着可调用对象的多个层级,因此我们可以将外层作用域、带有属性的类以及函数属性等与函数进行组合,以实现各种各样的编程结构。正如我们稍后将见到的,这有时候可能比我们所期待的要微妙一一每个被装饰的函数应该有自己的状态,并且每个被装饰的类以及该类生成的实例也应有自己的状态。

实际上,正如后面的文章将详细讲述的,如果我们也想要对一个类级别的方法应用函数装饰器,必须小心Python在作为可调用类的实例对象编写的装饰器和作为函数编写的装饰器之间的区分。

参考文献:
[1] Mark Lutz. Python学习手册[M]. 机械工业出版社, 2018.

http://www.hkea.cn/news/395735/

相关文章:

  • 专门做图片的网站吗如何建网站要什么条件
  • 卢氏县住房和城乡建设局网站站长统计 站长统计
  • 济南 网站制作旺道营销软件
  • 新上线网站如何做搜索引擎站长素材网站
  • 做网站编辑深圳疫情防控最新消息
  • PHP网站开发项目式教程google下载手机版
  • 国外专门用于做网站图片的做网站要多少钱
  • 网站维护费用计入什么科目媒介星软文平台官网
  • 网站建设seo 视频做网站哪个平台好
  • 旅行社网站建设方案论文百度seo公司
  • 长沙网站建设与维护百度开户联系方式
  • 做pcr查基因序列的网站南京百度网站快速优化
  • 数据服务网站策划方案关键词快速优化排名软件
  • 响应式网站缺点学大教育培训机构电话
  • 江苏天德建设工程有限公司网站一个平台怎么推广
  • 石家庄做网络推广的网站推广平台收费标准
  • 贵阳天柱网站建设招聘域名注册平台有哪些
  • 网站建设电话营销百度问一问官网
  • 网站优化建设河南怎么关闭seo综合查询
  • 自贡做响应式网站开发公司google搜索引擎入口google
  • 东莞哪种网站推广好微信朋友圈推广文案
  • 现在学做网站赚钱吗东莞市优速网络科技有限公司
  • 宁津做网站公司宣传推广图片
  • 陕西的建设厅官方网站数据分析报告
  • 企业网站建设的定位互联网
  • 注册域名之后如何做网站优化清理大师
  • wordpress+在线播放推广seo网站
  • 丽水网站建设明恩玉杰网站开发框架
  • 如何设计网站中的上传功能搜索引擎技术基础
  • 余江区建设局网站百度搜索引擎优化的方法