函数变量的生命周期
Posted 安迪_963
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数变量的生命周期相关的知识,希望对你有一定的参考价值。
#!/usr/bin/env python #coding:utf-8 #@Author:Andy # Date: 2017/6/14 # x = 1 # def foo(): # x = 10000 # print(x) # # foo() # print(x)
运行上面的代码会先后打印出:10000, 1。
执行foo函数后,x=10000的生命周期在foo函数内部,当此函数执行完后即消失,
接着执行print(x), 此时内部的x=10000已经销毁,只有全局变量x=1,所以打印1
x=1 def f(): x = 2 # 生命周期在f def f2(): x = 3 # 生命周期在f2 def f3(): nonlocal x # 会延伸到f2,限f2内部 print(x) x = 4 f3() f2() f()
此咱情况下最后打印的结果为3。
如果没有nonlocal x ,将会报错,因为nonlocal使得f3内部的x变量可以突破当前局部变量的限制
向上延伸到f2函数内部,如果f2内容仍没有找到x,那将继续到f内部,但仍然无法突破局部变量的限制,
无法延伸到全局变量的范围。但不能在nonlocal前面再定义一次x,那样将报错。
以上是关于函数变量的生命周期的主要内容,如果未能解决你的问题,请参考以下文章