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作用域的变量进行引用。
函数实质与属性:
- 函数是一个对象
- 函数执行完成后内部变量回收
- 函数属性
- 函数返回值
例子: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 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦