Python做用域 全局|局部|global


在使用变量的时候,有时候会发生变量引用错误,或者程序运行完,程序获得的结果与预期存在差异。函数

记住一条原则:任何变量在使用前,都必须确保“变量引用是否明确”!spa

  • 全局变量:做用域是整个脚本,除非被删除掉,不然他们存活到脚本结束,且对于全部函数,他们的值是能够被访问的。
  • 局部变量:做用域局限在定义的函数,依赖于函数现阶段是否处于活动。当函数被调用时,局部变量进入声明它们的做用域。一旦函数完成,变量将会离开其做用域。

咱们来看一些例子:
(1)局部变量
函数内部的变量名若是第一次出现,且出如今“=”左边,即被视为定义一个局部变量。无论全局域中有没有用到该变量名,函数中使用的将是局部变量。code

clipboard.png

ps:此处会报错。由于num首先被当成了一个局部变量,到等号右侧后发现这个变量还没赋值就被用于计算,因而报错。
Num += 100:这句话是有歧义的,num既能够表示引用全局变量,也能够是建立一个新的局部变量。
Python中,默认建立局部变量并使用它,除非显式声明globalip

(2)函数内部使用全局变量作用域

clipboard.png

此时num2引用的是全局变量中的num2。此处是明确的,由于把num2当作一个局部变量的话,会报错,只能是全局的num2,故不须要声明globalit

(3)函数内部修改全局变量
在函数中,若是想使用并修改到全局变量,则须要使用到global class

clipboard.png

(4)错误使用global变量

  • if __name__ == ‘__main__’:中使用global

clipboard.png

最好的直接解决这个问题的方法是把global声明从 if __name__==’__main__’: 中删除,在这里是不须要声明global的。
由于与其余语言不一样,Python中的if语句不会再引入一个新的做用域(scope),任何变量分配的都是全局变量(global)。做为一个全局变量,在使用变量名以前是不容许再一次声明为全局变量。
if __name__==’__main__’: 中的变量都是全局的,因此在main中间再一次声明global是错误的,因此系统会发出警告。cli


❤ thanks for watching, keep on updating...
点个赞再走吧引用

相关文章
相关标签/搜索