手记

视频-python装饰器笔记(待补充)

1.函数作用域(L>E>G>B)
L: local函数内部作用域
E: enclosing函数内部与内嵌函数之间
G: global全局作用域
B: build-in内置作用域
例子:

passline = 60  #全局作用域
def func(val):
    if val >= passline:
        print('pass')
    else:
        print('fail')    
print func(89)   #输出pass
passline = 60  #全局作用域
def func(val):
    passline = 90  #内部作用域
    if val >= passline:
        print('pass')
    else:
        print('fail') 
    def in_func():
        print(val)
    in_func()    #  输出val的值 89
print func(89)   #输出fail,首先会取内部作用域(L>E>G>B)
def MAX(x,y):
    return max(x,y)   #内置作用域
print(MAX(2,3))   #输出3

2.python闭包
closure:内部函数中对enclosing作用域的变量进行引用。
函数实质与属性:

  1. 函数是一个对象
  2. 函数执行完成后内部变量回收
  3. 函数属性
  4. 函数返回值
    例子:
    
    passline = 60  #全局作用域
    def func(val):
    print('%x' %id(val))  #输出6e3fd750
    if val >= passline:
        print('pass')
    else:
        print('fail') 
    def in_func():
        print(val)
    in_func()    
    return in_func

f = func(89) #输出 pass 89
f() #in_func 输出89
print(f.closure) #输出(<cell at 0x02DA9C90: int object at 0x6E3FD750>,)


闭包处理:

def set_passline(passline):
def cmp(val):
if val >= passline:
print('pass')
else:
print('fail')
return cmp
f_100 = set_passline(60)
f_150 = set_passline(90)
f_100(89)
f_150(89)


闭包作用:
 1. 封装
 2. 代码复用
0人推荐
随时随地看视频
慕课网APP