1. 闭包及其运用
1.1 函数的引用
示例:
def infoout():
print("Work hard!")
infoout()
print(infoout)
运行结果:
1.2 闭包概述
闭包可以获取函数内部的变量。
如果在一个函数的内部定义了另外一个函数,外部的函数叫做外函数,
内部的函数叫做内涵数。闭包是指在一个外函数中定义了一个内涵数,
内涵数里运用了外函数的临时变量,并且外函数的返回值是内函数的引用。
闭包需要满足3个条件:
1. 在函数嵌套的前提下。
2. 内部函数使用了外函数的变量(还包括外部函数的参数)
3. 外部函数返回了内部函数。
示例:
# 函数嵌套
# 外部函数
def outer(num_01):
# 内部函数
def inner(num_02):
# 内部函数必须使用了外部函数的变量
print(num_01 + num_02)
# 外部函数返回了内部函数,这里返回的内部函数就是闭包
return inner
# 创建闭包实例
outer_new = outer(10)
# 执行闭包
outer_new(30)
运行结果:
1.3 闭包的运用
闭包主要在面向对象、装饰器以及实现单例模式三个方面应用居多。
示例:利用闭包计算函数式:y=ax+b的函数值。
def calc_y(a, b):
def calc(x):
print(a * x + b)
return calc
calc_1 = calc_y(2, 5)
calc_1(3)
运行结果: