您的位置:首页 > 编程语言 > Python开发

python 闭包

2016-01-25 15:02 507 查看
# -*- coding:gb2312 -*-
__author__ = 'liuyc'
# 01:闭包用例
def setPassLine(line):
'''
这是一个引用自由变量的函数,他会与cmp这个函数同在。
但是它不是保存在代码中,而是保存在line_60函数的属性中。
'''
# cmp函数相当于一个包
def cmp(score):
if score >= line:
print 'pass...'
else:
print 'fail...'
return cmp

line_60 = setPassLine(60)   # 设置60分为及格线
line_60(60)
line_85 = setPassLine(85)   # 设置85分为及格线
line_85(60)

# 02:闭包作用:封装和代码复用

def my_sum(*args):
return sum(args)

def my_average(*args):
return sum(args) / len(args)

def closure(func):
def in_closure(*args):
if len(args) == 0:
return 0
for val in args:
if not isinstance(val, int):
return 0
return func(*args)
return in_closure

my_sum = closure(my_sum)    # closure(my_sum)-> (直接到return in_closure) -> my_sum
print my_sum(1,2,3,4)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: