局部变量&全局变量(Python)

182 阅读2分钟

在开发中,应该把所有的全局变量声明在所有函数的上方,可以保证所有的函数正常访问全局变量了

  • 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]