人生苦短 PYTHON当歌——PYTHON函数式编程02

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了人生苦短 PYTHON当歌——PYTHON函数式编程02相关的知识,希望对你有一定的参考价值。

   python作用域、局部与全局变量

   首先明白Python能够改变作用域的代码段是def class lamda if/elif/else  try/except/finally for/while

   变量的搜索路径是:局部变量-》全局变量

   不妨试试下面代码:

x=100
def main():
    x+=1
    print(x)
main()

当运行上面代码的时候会出错,为什么呢,就需要理解作用域,局部变量和全局变量的区别了

x=100
def main():
    global x
    x+=1
    print(x)
main()
print(x)  #全局变量已被改变

运行结果为:
101
101

  因为我们添加了global x,所以main()函数是能访问到全局变量x,

python闭包

到这里我们已经基本了解了Python作用域的规则

我们来写一个闭包

#python 3.5
def inc():  #inc是外围函数
    x=0
    def inner():   #inner 是嵌套函数
        nonlocal x
        x+=1
        print(x)
    return inner
inc1=inc()
inc2=inc()

inc1()
inc1()
inc1()
inc2()
运行结果:
1
2
3
1

 

从这个例子中,内部函数直接作为返回值返回了,在这里inc1就是一个闭包,闭包本质上是一个函数,它由两部分组成,inner函数和变量x,闭包使得这些变量值始终保存在内存中,

为什么要使用闭包?

闭包避免了使用全局变量,此外,闭包可以将函数与其所操作的某一些数据关联起来。

 



以上是关于人生苦短 PYTHON当歌——PYTHON函数式编程02的主要内容,如果未能解决你的问题,请参考以下文章

人生苦短 PYTHON当歌——PYTHON函数式编程02

python 人生苦短,我学Python

人生苦短,我用Python

人生苦短,我用Python(目录)

python 人生苦短,我学Python

人生苦短,我用Python(目录)