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

徐州专业建站公司北京优化seo排名优化

徐州专业建站公司,北京优化seo排名优化,wordpress 教学网,洞头区网站建设收费闭包函数与装饰器 闭包函数闭包的构成条件闭包如何理解 装饰器函数装饰器一函数装饰器二类装饰器一类装饰器二 闭包函数 闭包的构成条件 在函数嵌套#xff08;函数里面再定义函数#xff09;的前提下内部函数使用了外部函数的变量#xff08;参数#xff09;外部函数的返… 闭包函数与装饰器 闭包函数闭包的构成条件闭包如何理解 装饰器函数装饰器一函数装饰器二类装饰器一类装饰器二 闭包函数 闭包的构成条件 在函数嵌套函数里面再定义函数的前提下内部函数使用了外部函数的变量参数外部函数的返回值是内部函数的引用 闭包如何理解 一般来说如果一个函数结束函数内部的变量、参数会被释放掉而闭包则不 同它在外部函数结束时会把内部函数中用到的外部函数的变量、参数保存到内 部函数的__closure__属性中以提供给内部函数使用 def outer(a):b 5def inner():c 7print(a b c)return inner 这里的inner_func就是一个闭包, 本质上就是inner函数, 只不过还打包了它所依赖的参数a和变量b而已 inner_func outer(3) 自定义函数都会有一个__closure__属性, 如果不是闭包函数, 则返回None 如果是则返回一个由cell对象组成的元组, 每个cell对象的cell_contents属性就是外部 函数保存的变量 print(inner_func.__closure__) print(inner_func.__closure__[0].cell_contents) # 3 (外部函数保存的参数a的值) print(inner_func.__closure__[1].cell_contents) # 5 (外部函数保存的变量b的值) inner_func()将实现特定的功能代码封装成装饰器提高代码复用率 def outer():funcs []for k in range(3):def inner():return k * kfuncs.append(inner)return funcs这里的f1, f2, f3都是闭包, 本质上都是inner函数, 且使用了outer函数的变量k outer函数在结束时, 将变量k保存到内部函数的__closure__属性中, 而k最后为2 f1, f2, f3 outer() print(f1.__closure__[0].cell_contents) print(f2.__closure__[0].cell_contents) print(f3.__closure__[0].cell_contents) print(f1()) print(f2()) print(f3())装饰器 装饰器顾名思义就是起装饰作用的不改变原来函数作用的只是在原来函数上增加些额 外的功能。 装饰器并不是编码必须性不使用装饰器也完全可以很多时候使用它是为了 使代码更加优雅结构更加清晰将实现特定的功能代码封装成装饰器提高代码复用率 函数装饰器一 import timedef timer(func):def wrapper(sleep_time):t1 time.time()func(sleep_time)t2 time.time()cost_time t2 - t1print(f花费时间{cost_time}秒)return wrappertimer # 这个装饰器就是函数 def function(sleep_time): time.sleep(sleep_time) 执行顺序说明 代码从上往下执行, 先导入time模块, 定义timer函数, 再执行到timer装饰器, 该函数装饰器没有调用, 再定义function函数, 当被装饰的函数定义好了, 则将被 装饰的函数作为参数传入装饰器函数并执行, 即timer(function), 返回wrapper函数的 引用, 所以当最后执行function(3)时, 其实等价于wrapper(3), 而wrapper函数中又调用了 func函数, 即function函数 function(3)函数装饰器二 import timedef interaction(name):def wrapper(func):def deco(work_time):# print(deco函数被调用)print(f{name}, 你好, 请把要洗的衣物放进来!)func(work_time)print(f{name}, 我帮你把衣物洗好了, 快来拿!)return decoreturn wrapperinteraction(张三) def washer(work_time): time.sleep(work_time) print(嘀嘀嘀...) 执行顺序说明 代码从上往下执行, 先导入time模块, 定义interaction函数, 再执行到interaction 装饰器, 该函数装饰器被调用, 则执行该函数, 定义wrapper函数, 并返回其引用, 再定义washer 函数, 当 被装饰的函数定义好了, 则将被装饰的函数作为参数传入刚刚执行装饰器返回的wrapper函数 并执行, 即wrapper(washer), 再定义deco函数, 并返回其引用, 所以当最后执行washer(3)时, 其实等价于deco(3), 而deco函数中又调用了func函数, 即washer函数 washer(3)类装饰器一 import timeclass Timer:def __init__(self, func):self.func funcdef __call__(self, sleep_time):t1 time.time()self.func(sleep_time)t2 time.time()cost_time t2 - t1print(f花费时间{cost_time}秒)Timer # 这个装饰器就是类 def function(sleep_time):time.sleep(sleep_time)执行顺序说明 代码从上往下执行, 先导入time模块, 定义Timer类和方法, 执行到Timer装饰器时, 该类装饰器没有实例化, 再定义function函数, 当被装饰的函数定义好了, 则将被 装饰的函数作为参数传入类装饰器并实例化, 即Timer(function), 实例化调用初始化方 法, 创建实例变量, __new__返回实例对象, 当最后执行function(3)时, 其实等价于 Timer(function)(3), 即调用__call__方法, 而该方法中又调用了func函数, 即function函数 function(3)类装饰器二 import time class Interaction:def __init__(self, name):self.name name def __call__(self, func):def deco(work_time):print(f{self.name}, 你好, 请把要洗的衣物放进来!)func(work_time)print(f{self.name}, 我帮你把衣物洗好了, 快来拿!)return deco Interaction(张三) def washer(work_time):time.sleep(work_time)print(嘀嘀嘀...) 执行顺序说明 代码从上往下执行, 先导入time模块, 定义Interaction类和方法, 执行到 Interaction装饰器时, 该类装饰器进行实例化, 调用初始化方法, 创建实例变量, __new__返回实例对象, 再定义 washer函数, 当被装饰的函数定义好了, 则将被装饰的函数作为参数调用实例对象, 即Interaction(张 三)(washer), 即调用__call__方法, 定义deco函数并返回其引用, 所以当最后执行washer(3)时, 其实 等价于deco(3), 而其中又调用了func函数, 即washer函数 washer(3)内置装饰器 classmethod 将类中的方法装饰为类方法 staticmethod 将类中的方法装饰为静态方法 property 将类中的方法装饰为只读属性 class Student:def __init__(self, name, age):self.name nameself.age agepropertydef adult_age_p(self):return 18def adult_age(self):return 18propertydef adult_flag(self):return self.age self.adult_age_pstu Student(张三, 18) print(stu.adult_age()) # 没有加property, 必须使用正常的调用方法的形式,在后面加() print(stu.adult_age_p) # 加了property, 用调用属性的形式来调用方法, 后面不需要加() print(stu.adult_flag) # True stu.age 17 # 可以修改stu对象的age属性 # stu.adult_age_p 19 # 报错property将方法装饰为只读属性, 不能修改 print(stu.adult_flag) # False
http://www.zqtcl.cn/news/845297/

相关文章:

  • 做羊毛毡的网站电子商务网站建设品牌
  • 用vue做商城网站常用的js教做发型的网站
  • 江西省寻乌县建设局网站广州网站建设一般多少钱
  • 做网站公司郑州郑州的网站建设公司哪家好网站开发word
  • 网页转向功能网站wordpress搭建小说站
  • 北京华夏建设有限公司网站wordpress建站安全吗
  • 怎样做电子商务网站直接通过ip访问网站
  • 白沟17网站一起做网店有啥方法下载wordpress主题
  • 找人做网站毕业设计用于做网站头的图片
  • 黄埔做网站江西省建设工程造价管理局网站
  • 适合网站开发的框架网盘视频直接做网站
  • wordpress菜谱网站网站服务公司
  • 跳转网站代码互联网平台构建怎么写
  • 服务器网站建设维护uemo网站源码
  • 浏览器如何做购物网站百度快照提交入口
  • 网站建设的主要步骤有哪些金华网站建设平台
  • 扁平化网站布局稷山网站制作
  • 做画找图网站包装策划与设计专业
  • 适合大学生做的兼职网站深圳企业名录大全
  • 电脑做网站用什么软件培训心得体会2000字
  • 手机网站开发公司哪家最专业html5商业网站开发北大青鸟
  • 做爰全过程教育网站建筑工程公司名字起名大全
  • 如何作做网站网站建设需要掌握什么技术
  • 广州网站建设推广公司做网站怎么合并单元格
  • 网站建设策划书的编制怎样建网站域名
  • 公司做网站的费用怎么记账网站源码html
  • 网站流量数据东莞松山湖华为招聘信息
  • 跨境电商一站式服务平台wordpress用旧的编辑器
  • 上海外贸网站推广方法爱站关键词
  • 网站页面框架设计企业建设流程