多个装饰器: 加载顺序:由下而上 执行顺序:由上而下 有参装饰器: 闭包,给函数传参的一种方法 当装饰器内需要参数时,可以采用闭包形式给其传参,第三层函数接收完参数时,就变为无参装饰器 三元表达式: 在不影响可读性的情况下,将只有两种结果的if判断,写为一行 x if x>y else y 左边为条件成立时的返回值,else后为条件不成立的返回值 匿名函数 lambda x,y :x+y 冒号左边为传入的参数,右边为返回的结果 应用场景:用一次就不用了 匿名函数不会单独使用,与内置函数配套使用…
一,复习 ''' 1.函数的参数:实参与形参 形参:定义函数()中出现的参数 实参:调用函数()中出现的参数 形参拿到实参的值,如果整体赋值(自己改变存放值的地址),实参不会改变,(可变类型)如果修改内部内容,实参会跟着变化 位置实参 - 只能对位置形参赋值 关键字实参 - 可以对所有(不包含可变长位置形参)形参赋值 位置形参 - 必须出现在最前,且必须传值 默认形参 - 出现在位置形参后*前,可以不用传参 可变长位置形参 - 接收所有位置形参.默认形参没有接收完的位置实参 有无默认值关键字形参…
上节课复习:1.函数的对象    函数可以被当作数据取处理2.函数嵌套    嵌套调用:在调用一个函数时,函数体代码又调用了其他函数    嵌套定义:在一个函数内部又定义了另一个函数 def foo() def inner(): pass return inner #拿到inner的内存地址 f=foo() #foo全局变量可以通过返回的inner地址调用inner 3.名称空间与作用域    名称空间:存放名字与值的内存地址绑定关系的地方    x=1    x    内置名称空间    全局…
1.装饰器剩余 from functions import wraps @wrap(func) 会把func内的自带方法赋给wrapper,这样wrapper装饰函数就和原函数一模一样 多个装饰器叠加 def outter1(func): def wrapper1(*args,**kwargs): res = func(*args,**kwargs) return res return wrapper1 def outter2(func): def wrapper2(*args,**kwargs…
## 复习 '''函数的嵌套定义:在函数内部定义另一个函数 闭包:被嵌套的函数 -- 1.外层通过形参给内层函数传参 -- 2.验证执行 开放封闭原则: 功能可以拓展,但源代码与调用方式都不可以改变 装饰器:装饰器名就是外层函数 @outer@outer  # fn = outer(fn)def fn(): pass''' def wrap(func):    def inner(*args, **kwagrs):        # res = func(*args, **kwagrs)    …
""" 今日内容: 1.带参装饰器及warps 2.迭代器 3.生成器 """ """ # 一.带参装饰器及warps系统装饰器 # 1.为什么需要带参装饰器? -- 昨天的内容已经讲了装饰器,但是讲的都是增加的函数不需要外界传人参数,如果装饰器也需要外界传入参数呢? -- 此时就需要带参装饰器 # 2.装饰器的推导过程 -- 如果添加的功能也需要外界传入参数时,参数应该如何通过谁进行传递呢? -- 如果通过inne…
复习 ''' 函数的嵌套定义:在函数内部定义另一个函数 闭包:被嵌套的函数 -- 1.外层通过形参给内层函数传参 -- 2.验证执行 开放封闭原则: 功能可以拓展,但源代码与调用方式都不可以改变 装饰器:装饰器名就是外层函数 @outer @outer # fn = outer(fn) def fn(): pass ''' def wrap(func): def inner(*args, **kwagrs): # res = func(*args, **kwagrs) res = outer.i…
带参装饰器 通常,装饰器为被装饰的函数添加新功能,需要外界的参数  -- outer参数固定一个,就是func -- inner参数固定同被装饰的函数,也不能添加新参数 -- 可以借助函数的嵌套定义,外层给内层传参 def wrap(info): def outer(func): # info = 0 def inner(*args, **kwargs): print('新:拓展的新功能,可能也需要外界的参数%s' % info) res = func(*args, **kwargs) retu…
复习 函数的嵌套定义:在函数内部定义另一个函数 闭包:被嵌套的函数 -- 1.外层通过形参给内层函数传参 -- 2.返回内部函数对象---->  延迟执行, 开放封闭原则: 功能可以拓展,但源代码与调用方式都不可以改变 装饰器:装饰器名就是外层函数 @outer @outer  # fn = outer(fn) def fn(): pass 今日内容 1.带参装饰器  |  2.wrapper  |  3.可迭代对象 |   4.迭代器对象  |  5.for 迭代器工作原理 |  6.枚举对象…
1.有参装饰器 模板: def auth(x): def deco(func): def timmer(*args,**kwargs ): res = func(*args,**kwargs ) return timmer return deco 例子: import timecurrent_user={'user':None}def auth(engine='file'): def deco(func): def wrapper(*args,**kwargs): if current_user…