返回函数
带返回结果的函数
示例
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Python 返回函数
# 求和,返回值
def sum(x, y):
return x + y
print(sum(1,2))
运行结果
D:\PythonProject>python run.py
3
lazy 返回函数
延迟返回结果的函数
示例
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Python 返回函数
# 懒加载-求和
def lazy_sum(x, y):
def sum():
return x+y
return sum
# 调用lazy_sum()时,返回的并不是求和结果,而是求和函数
f = lazy_sum(1,2)
# 调用函数f时,才真正计算求和
print(f())
运行结果
D:\PythonProject>python run.py
<function sum at 0x03C38870>
3
闭包(Closure)
我们在函数lazy_sum中又定义了函数sum,并且,内部函数sum可以引用外部函数lazy_sum的参数和局部变量,当lazy_sum返回函数sum时,相关参数和变量都保存在返回的函数中,这种称为“闭包
上述 每次调用都会返回一个新的函数,即使传入相同的参数
示例
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Python 返回函数
# 懒加载-求和
def lazy_sum(x, y):
def sum():
return x+y
return sum
# 调用lazy_sum()时,返回的并不是求和结果,而是求和函数
print(lazy_sum(1,2))
f1 = lazy_sum(1,2)
print(f1())
f2 = lazy_sum(1,2)
print(f2())
# 每次调用都会返回一个新的函数,即使传入相同的参数
# 所以返回是False
print(f1 == f2)
结果
D:\PythonProject>python run.py
<function sum at 0x04128870>
3
3
False