您的位置:

Python全局变量global详解

Python中,全局变量是在整个程序中都可以访问的变量,可以在函数内部和外部进行访问和修改。在Python中定义全局变量时,需要使用global关键字进行声明。

一、Python全局变量定义

global_var = 10
def test_global():
    print("全局变量global_var的值为:", global_var)

test_global()

输出结果为:

全局变量global_var的值为: 10

在函数外定义一个全局变量global_var,然后在函数test_global中通过global_var来访问和输出全局变量的值。

二、Python全局变量和局部变量

global_var = 10
def test_local_global():
    local_var = 20
    global_var = 30
    print("局部变量local_var的值为:", local_var)
    print("局部变量global_var的值为:", global_var)

test_local_global()
print("全局变量global_var的值为:", global_var)

输出结果为:

局部变量local_var的值为: 20
局部变量global_var的值为: 30
全局变量global_var的值为: 10

在函数中可以定义局部变量,局部变量的生命周期只在函数内部。如果在函数中需要对全局变量进行修改,需要使用global关键字来声明。

三、Python多进程共享全局变量

import multiprocessing

global_var = 10
def test_multi_global():
    global global_var
    global_var += 1
    print("进程ID:", multiprocessing.current_process().name, "全局变量的值为:", global_var)

if __name__ == '__main__':
    p1 = multiprocessing.Process(target=test_multi_global)
    p2 = multiprocessing.Process(target=test_multi_global)
    p1.start()
    p2.start()
    p1.join()
    p2.join()
    print("最终全局变量的值为:", global_var)

输出结果为:

进程ID: Process-1 全局变量的值为: 11
进程ID: Process-2 全局变量的值为: 12
最终全局变量的值为: 12

在多进程中需要对全局变量进行共享时,需要使用multiprocessing模块,同时使用global关键字进行声明和修改。

四、Python全局变量赋值

global_var = 10
def test_global_assignment():
    global global_var
    global_var = 20

test_global_assignment()
print("全局变量global_var的值为:", global_var)

输出结果为:

全局变量global_var的值为: 20

在函数内部可以通过global关键字来修改全局变量的值。

五、Python全局变量声明

global_var = 10
def test_global_declaration():
    global global_var
    global_var += 1
    print("全局变量global_var的值为:", global_var)

test_global_declaration()

输出结果为:

全局变量global_var的值为: 11

在函数内部可以通过global关键字来声明全局变量,让函数内部的变量变成全局变量。

六、Python局部变量全局变量

global_var = 10
def test_local2global():
    global_var = 20
    print("局部变量global_var的值为:", global_var)

def test_global2local():
    global global_var
    global_var = 30
    print("全局变量global_var的值为:", global_var)

test_local2global()
print("全局变量global_var的值为:", global_var)
test_global2local()
print("全局变量global_var的值为:", global_var)

输出结果为:

局部变量global_var的值为: 20
全局变量global_var的值为: 10
全局变量global_var的值为: 30

局部变量和全局变量可以同名,但是在函数内部如果定义了同名的变量,会优先使用局部变量。如果需要在函数内部修改全局变量的值,则需要使用global关键字。