继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

focuspe
关注TA
已关注
手记 20
粉丝 26
获赞 246

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. 代码复用
打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP