为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
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. 代码复用
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消