在开发中,应该把所有的全局变量声明在所有函数的上方,可以保证所有的函数正常访问全局变量了
- global 关键字
gl_number = 100
num_list = [4, 5, 6]
num = 1
def demo1():
# 如果想修改 全局变量的值,可以使用 global 关键字进行声明
# global 可以告诉解释器 后面的变量是一个全局变量
# 这样在函数内部修改全局变量的时候,就不会在函数内部创建一个局部变量了
global num
num = 2
print("局部变量num的值是:%d" % num) # 局部变量num的值是:2
def demo2():
# num1 = 2
print("demo1的函数中num1的值是: %d " % num) # demo1的函数中num1的值是: 2
demo1()
demo2()
- 使用赋值语句,会改变再函数内部的变量,不会影响外部的变量
def demo3(num,num_list):
print("函数内部的代码")
# 只要针对参数进行赋值语句,并不会影响外部的变量和传参变量
num = 99 # 创建一个 num =99
num_list = [1, 2, 3]
print("局部变量num_list:", num_list) # 局部变量num_list: [1, 2, 3]
print("局部变量num_list:", num) # 局部变量num_list: 99
print("函数内部的代码执行完成")
demo3(gl_number, num_list)
print("全局变量 num_list:", gl_number) # 全局变量 num_list: 100
print("全局变量num_list:", num_list) # 全局变量num_list: [4, 5, 6]
- 使用方法对 参数 进行修改变量,会改变全局变量
gl_list = [1, 2, 3]
def demo4(num_list):
print("函数开始执行")
# 当传递的参数是可变类型,在函数内部使用 方法 修改了参数的内容,会同步到外部变量
num_list.append(9)
print("函数内部使用方法修改全局变量num_list:", num_list) # 函数内部使用方法修改全局变量num_list: [1, 2, 3, 9]
print("函数执行完毕")
demo4(gl_list)
print("使用方法修改全局变量gl_list:", gl_list) # 使用方法修改全局变量gl_list: [1, 2, 3, 9]