本文已参与「新人创作礼」活动,一起开启掘金创作之路。
1. 全局变量定义位置
全局变量是在函数外部定义的变量,所有函数内部都可以使用这个变量。
全局变量定义位置:
-
在开发时,应该把模块中的所有全局变量定义在所有函数上方就能够保证所有函数都正常访问到每一个全局变量了
-
若某个全局变量在调用函数后才定义的,而该函数内部调用了这个全局变量,在执行函数时,变量还没有定义,所以程序会报错。
2. 全局变量命名
-
为了避免局部变量和全局变量出现混淆,在定义全局变量时,全局变量名称前应该增加g_或者gl_的前缀。
-
例如:
gl_num,gl_title,g_num,g_title -
如果局部变量的名字和全局变量的名字相同,Pycharm会在局部变量下方显示一个灰色的虚线。
3. 函数内部修改全局变量
-
如果在函数中需要修改全局变量,需要使用global进行声明。即
global 变量名 -
关键字会告诉解释器,后面的变量是一个全局变量。再使用赋值语句时,就不会创建局部变量。
-
注意:如果只是再函数内部定义了一个与全局变量同名的局部变量,只是变量名相同,但并不会修改全局变量的值。
# 全局变量:在函数外部定义,但是在函数内部能够访问
num = 10
def demo1():
# 希望修改全局变量的值-使用global声明一下变量即可
# global关键字会告诉解释器后面的变量是一个全局变量
# 在使用赋值语句时,就不会创建局部变量
global num
# 希望修改全局变量的值
# 在Python中,是不允许直接修改全局变量的值
# 如果使用赋值语句,会在函数内部定义一个局部变量,也全局变量没有任何关系
num = 99
print("demo1 ==> %d" % num)
def demo2():
print("demo2 ==> %d" % num)
demo1()
demo2()
运行输出结果如下图所示:
因为在demo1函数内部使用global修改了全局变量的值,所以demo2函数调用的的全局变量值发生了改变。