再见,2020!2021,让我们背起行囊“闭包”再出发!

再见,2020!2021,让我们背起行囊“闭包”再出发!_第1张图片

一、人生模式:每一段历程,向着目标出发!

def life(time, goal):
    print(time + ',' + '加油!')
    
    mygoal = time + ':' + goal + '!'
    def go():
        print(mygoal, '出发...')
    return go  # 注意:不是返回:go() 

二、开启每一段精彩历程,定下每一段旅程目标!

# 生活,就是由各种不同目标的一段段旅程组成...
# 定义好目标,准备出发(返回go函数引用)
past = life('2020', '刻苦努力')
now = life('当下', '过好当下')
future = life('2021', '未来可期')
2020,加油!
当下,加油!
2021,加油!

三、关键在于:每一段历程,都矢志不移!

# past、now及future三者其实指向的都是life中的go函数。
past()
now()
future()
# 但执行结果为什么不一样呢?
2020:刻苦努力! 出发...
当下:过好当下! 出发...
2021:未来可期! 出发...

再见,2020!2021,让我们背起行囊“闭包”再出发!_第2张图片

四、“闭包”:相同的go函数,但每段旅程心中的目标mygoal各不相同。

def life(time, goal):
    print(time + ',' + '加油!')
    mygoal = time + ',' + goal + '!' 
    def go():
        print(mygoal, '出发...')
    return go
  • go函数需要访问父函数life中的mygoal变量;
  • 但是父函数早在调用life时就已经运行结束了;
  • life调用结束时,返回了go函数引用(不是调用!),为了不忘目标,mygoal被同时打包进行囊(一块组成了“闭包”函数),牢记于心。
    再见,2020!2021,让我们背起行囊“闭包”再出发!_第3张图片

2020年是不平凡的一年,我们一块见证了世界的变化和挑战。转眼,2020即将过去,让我们放下过去、放眼将来,2021,我们满怀希望,再出发!

你可能感兴趣的:(Python实践,专攻重难点,python,编程语言,函数闭包,闭包)