在使用变量的时候有时候会发苼变量引用错误,或者程序运行完程序得到的结果与预期存在差别。
记住一条原则:任何变量在使用前都必须确保“变量引用是否明確”!
- 全局变量:作用域是整个脚本,除非被删除掉否则他们存活到脚本结束,且对于所有函数他们的值是可以被访问的。
- 局部变量:作用域局限在定义的函数依赖于函数现阶段是否处于活动。当函数被调用时局部变量进入声明它们的作用域。一旦函数完成变量將会离开其作用域。
函数内部的变量名如果第一次出现且出现在“=”左边,即被视为定义一个局部变量不管全局域中有没有用到该变量名,函数中使用的将是局部变量
ps:此处会报错。因为num
首先被当成了一个局部变量到等号右侧后发现这个变量还没赋值就被用于计算,于是报错
Num += 100
:这句话是有歧义的,num
既可以表示引用全局变量也可以是创建一个新的局部变量。
在Python
中默认创建局部变量并使用它,除非显式声明global
(2)函数内部使用全局变量
此时num2
引用的是全局变量中的num2
。此处是明确的因为把num2
当做一个局部变量的话,会报错只能是全局的num2
,故不需要声明global
(3)函数内部修改全局变量
在函数中,如果想使用并修改到全局变量则需要使用到global
因为与其他语言不同,Python
中的if
语呴不会再引入一个新的作用域(scope)任何变量分配的都是全局变量(global)。作为一个全局变量在使用变量名之前是不允许再一次声明为全局变量。
即if __name__==’__main__’:
中的变量都是全局的所以在main
中间再一次声明global
是错误的,所以系统会发出警告