1)本地变量被调用时必须提前申明
123456789101112131415161718192021 | x = 12 def f1(): x = 3 print x def f2(): x + = 1 #函数内部遇到变量赋值,此处为x = x+1,x会被当做局部变量,但是f2()内部是没有定义的,因此会报错 print x f1() #输出3 f2() #报错,由于x没有被声明 #修改如下 def f2(): global x x + = 1 print x f2() #输出13 |
2)函数(包括闭包)中局部变量
123456789101112131415161718 | python中,一个函数可以随意读取全局变量,但是要修改全局变量的时候只有两种方法: 1 global 声明全局变量 2 全局变量是可变数据类型数据 1 )python闭包函数中,我们可以随意使用外函数绑定来的临时变量,但是如果我们想修改外函数的临时变量数值会报错. 2 )使用闭包时,一旦外函数被调用一次返回内函数的引用,虽然每次调用内函数,是开启一个函数执行过后消亡,但是闭包变量实际上只有一份,每次开启内函数都在使用同一份闭包变量 def counter(start_at = 0 ): count = start_at def incr(): count + = 1 return count return incr def counter(start_at = 0 ): count = [start_at] def incr(): count[ 0 ] + = 1 return count[ 0 ] return incr |