python可以访问外围作用域中的变量吗?Python如何访问外围作用域中的变量?

这篇文章主要介绍了python可以访问外围作用域中的变量吗?Python如何访问外围作用域中的变量?的相关资料,需要的朋友可以参考下,文章介绍的非常详细,操作简单,希望可以对你的学习带来一定的帮助!

python可以访问外围作用域中的变量吗?Python如何访问外围作用域中的变量?

文章插图
当我们在使用一个在表达式对一个变量进行引用时,首先会对所有的作用域按顺序进行遍历的操作,如何在对这个变量进行寻找,寻找它的作用域、以及外围的作用域,包括当前函数的,还有一个全局作用域也就是global,它表示的就是一个代码目前所在的模块作用域 。如果在这些作用域中找不到变量,那么它就会报出异常“NameError” 。
【python可以访问外围作用域中的变量吗?Python如何访问外围作用域中的变量?】如果是对一个变量进行赋值的话,它又会有所不同,如果一个作用域变量已经存在了的话,它会对这个值进行一个覆盖的操作,如果不存在,它就会把它当成是一个作用域中新定义的变量,它就不会再去向外围进行寻找 。举个例子:
def function():  flag = True  def HH():    flag = False HH()  print flagfunction()在这个示例中,我们对函数进行定义,并且对HH 中变量进行了赋值,这里 flag 输出仍为 True 。习惯了 c 语言之类静态类型语言,这种设计起初会感到困惑,但其可以有效地防止局部变量污染函数外的环境 。
如果是在python2版本中,操作如下:
def function():  flag = [True]  def HH():    flag[0] = False HH()  print flagfunction()在这个示例中,flag[0]的作用就是进行读的操作,它会产生一次对变量的引用,当去寻找到外围作用域中 flag,这时候再赋值 flag[0] = False 就不会新定义变量了 。
如果是在python3版本中,就可以很好的使用关键字 。示例如下:
def function():  flag = True  def HH():    nonlocal flag    flag = False  HH()  print flagfunction()通过上述的示例中,我们可以知道在python3中,我们可以通过使用nonlocal关键字来进行操作 。
关于“python可以访问外围作用域中的变量吗?Python如何访问外围作用域中的变量?“的相关内容就讲解到这里啦,想要学习更多的知识,可以继续关注哦!

    推荐阅读