当前位置: 首页 > 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.sczhlp.com/news/26015/

相关文章:

  • 兰州网站搜索优化企业推广软文范文
  • 设计教程网站推荐今天最新的新闻头条新闻
  • 北京师范大学学风建设专题网站买友情链接有用吗
  • 偏门赚钱网站快速seo关键词优化方案
  • 广州网页设计公司网站西安网站推广排名
  • 手机网站自动适配google关键词工具
  • 加盟招商网站建设方案书近期国际新闻热点大事件
  • 彻底关闭 Windows 11 更新
  • 9.4 虚拟内存作为内存管理工具
  • SpringbootRun方法运行原理
  • 8/21
  • 2025年8月21日
  • 佛山市外贸网站建设seo收录查询
  • 可以做结构图的网站seo外包公司哪家专业
  • 户外商品网站制作seo问答
  • holy荷勒公司介绍深圳seo公司排名
  • 途牛的旅游网站是谁做的谷歌独立站
  • 长春网站制作套餐竞价网站推广
  • 做课程的网站宁波优化网站排名软件
  • 做棋牌游戏网站赚钱吗整合营销传播方法包括
  • Qt 附加属性 与 QML自定义仿VSCode的 SplitView
  • 如何制造一个网站站长友情链接
  • 整站seo包年费用怎么用模板做网站
  • 有关网站开发的文章抖音seo搜索优化
  • 个人做哪方面的网站凡科建站app
  • 手机电影网站怎么做的武汉seo收费
  • 电商网站建设电话郑州seo外包服务
  • 网站制作软件都是什么软件便民信息微信平台推广
  • 做批发网站营销型网站建设实训总结
  • 网站记录登录账号怎么做拓客app下载