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

简单设计网站网站建设皖icp

简单设计网站,网站建设皖icp,网页设计课程总结,做网站背景图片装饰器#xff08;decorator#xff09; Python装饰器的作用是使函数包装与方法包装#xff08;一个函数#xff0c;接受函数并返回其增强函数#xff09;变得更容易阅读和理解。最初的使用场景是在方法定义的开头能够将其定义为类方法或静态方法。 不使用装饰器的代码如…装饰器decorator Python装饰器的作用是使函数包装与方法包装一个函数接受函数并返回其增强函数变得更容易阅读和理解。最初的使用场景是在方法定义的开头能够将其定义为类方法或静态方法。 不使用装饰器的代码如下所示 类方法不用装饰器的写法 class WithoutDecorators:def some_static_method():print(this is static method)some_static_method staticmethod(some_static_method)def some_class_method(cls):print(this is class method)some_class_method classmethod(some_class_method)函数不用装饰器的写法 def decorated_function():passdecorated_function some_decorator(decorated_function)如果用装饰器语法重写的话代码会更简短也更容易理解 类方法使用装饰器的写法 class WithDecorators:staticmethoddef some_static_method():print(this is static method)classmethoddef some_class_method(cls):print(this is class method)函数使用装饰器的写法 some_decorator def decorated_function():pass装饰器通常是一个命名的对象在装饰函数时接受单一参数并返回另一个可调用callable对象任何实现了__ call __方法的可调用对象都可以用作装饰器它们返回的对象往往也不是简单的函数而是实现了自己的__ call __方法的更复杂的类的实例。 任何函数都可以用作装饰器Python没有规定装饰器的返回类型。所以使用单一参数但不返回可调用对象的函数用作装饰器在语法上是完全有效的。如果调用这样装饰过的对象就会报错。 自定义装饰器 以函数形式创建 def mydecorator(function):def wrapped(*args, **kwargs):# 在调用原始函数之前做点什么result function(*args, **kwargs)# 在函数调用之后做点什么# 并返回结果return result# 返回wrapper作为装饰函数return wrappedmydecorator传入的function是函数在mydecorator中定义了一个函数wrapped在wrapped函数中args和kwargs参数是原函数function的参数装饰器使用wrapped来对函数进行修饰所以装饰器返回的也是wrapped 以类的形式创建 class DecoratorAsClass:def __init__(self, function):self.function functiondef __call__(self, *args, **kwargs):# 在调用原始函数之前做点什么result self.function(*args, **kwargs)# 在调用函数之后做点什么# 并返回结果return result在这个类中self.function为需要修饰的函数在__call__方法中定义对self.function的修饰 参数化装饰器 在实际代码中通常需要使用参数化的装饰器。如果用函数作为装饰器的话需要用到第二层函数嵌套包装。 def repeat(number3):def actual_decorator(function):def wrapper(*args, **kwargs):result Nonefor _ in range(number):result function(*args, **kwargs)return resultreturn wrapperreturn actual_decorator在这里构建的是多次重复执行的装饰函数number参数为重复次数默认值是3 我们来测试一下参数化的装饰器 保存内省的装饰器 使用装饰器的常见问题是使用装饰器时不保存函数元数据尤其是文档字符串和原始函数名。装饰器组合创建了一个新函数并返回一个新对象但却完全没有考虑原始函数的标识。这将会使得调试这样装饰过的函数更加困难也会破坏可能用到的大多数自动生成文档的工具因为无法访问原始的文档字符串和函数签名。我们来看一下细节。假设我们有一个虚设的dummy装饰器仅有装饰作用还有其他一些被装饰的函数 def dummy_decorator(function):def wrapped(*args, **kwargs):包装函数内部文档。return function(*args, **kwargs)return wrappeddummy_decorator def function_with_important_docstring():这是我们想要保存的重要文档字符串。Pass解决这个问题的正确方法是使用functools模块内置的wraps()装饰器 from functools import wrapsdef preserving_decorator(function):wraps(function)def wrapped(*args, **kwargs):包装函数内部文档。return function(*args, **kwargs)return wrappedpreserving_decorator def function_with_important_docstring():这是我们想要保存的重要文档字符串。pass测试效果如下
http://www.pierceye.com/news/851870/

相关文章:

  • 电商网站设计是干什么的如何建设cpa影视网站
  • wordpress设置阅读全文什么是seo搜索引擎优化
  • 网站名重复网站建设的经验之谈
  • 网站优化软件排名器有含义的公司名
  • 像wordpress一样的网站吗老徐蜂了网站策划书
  • ps做网站首页效果特效wordpress无法修改密码
  • 蚌埠网站设计一句话宣传自己的产品
  • 织梦开发供需网站杭州互联网企业排名
  • 网站结构分析关键词林俊杰的寓意
  • 网站备案 超链接青岛胶南做网站的
  • 国内ui做的好的网站网站底部 图标
  • 网站开发维护人员天津微外卖网站建设
  • 保定网站建设推广公司怎么样雄安优秀网站建设
  • 上海集团网站建设做网站用asp好吗
  • h5网站建设价格wp-wordpress
  • 简单描述一下网站制作的流程投资理财产品的网站建设
  • 企业网站制作托管东营高端网站建设
  • 可以推广网站建立网站接受投注是什么意思
  • 微网站制作网站开发创建自己网站的步骤
  • 人才网网站开发手册外链发布平台大全
  • 福州网站备案wordpress打开媒体链接设置
  • 大学网站建设考核办法永春网站设计
  • 哪个设计网站赚钱百度地图网页版进入
  • 网站备案号不存在100m的网站 数据库
  • 网站空间管理平台网站模版 优帮云
  • 网站开发的比较备案期间 需要关闭网站吗
  • 做网站 怎么推广上海市企业服务云十问十答
  • 怎么做一种网站为别人宣传wordpress query_posts()
  • 网站的运营和维护专业做网站官网
  • 详细论述制作网站的步骤做网站需求 后期方便优化