English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

파이썬 기본 튜토리얼

파이썬 프로세스 제어

Python 함수

Python 데이터 타입

파이썬 파일 작업

파이썬 객체와 클래스

파이썬 날짜와 시간

파이썬 고급 지식

파이썬 참조 가이드

Python Global 키워드

在阅读本文之前,请确保您已掌握Python全局,局部和非局部变量的一些基础知识。

全局关键字简介

在Python中,global关键字允许您在当前作用域之外修改变量。它用于创建全局变量并在局部上下文中对该变量进行更改。

全局关键字规则

Python中global关键字的基本规则是:

  • 当我们在函数内部创建变量时,默认情况下它是局部的。

  • 当我们在函数外部定义变量时,默认情况下它是全局的。您不必使用global关键字。

  • 我们使用global关键字在函数内部读写全局变量。

  • 在函数外使用global关键字无效

全局关键字的使用(示例)

让我们举个实例。

예제1:从函数内部访问全局变量

c = 1 # 全局变量
def add():
    print(c)
add()

当我们运行上面的程序时,输出将是:

1

但是,在某些情况下,我们需要从函数内部修改全局变量。

예제2:从函数内部修改全局变量

c = 1 # 全局变量
    
def add():
    c = c + 2 # increment c by 2
    print(c)
add()

当我们运行上面的程序时,输出显示错误:

UnboundLocalError: local variable 'c' referenced before assignment

这是因为我们只能访问全局变量,而不能从函数内部对其进行修改。

解决方案是使用global关键字。

예제3:使用global从函数内部更改global变量

c = 0 # 全局变量
def add():
    global c
    c = c + 2 # increment by 2
    print("Inside add():", c)
add()
print("In main:", c)

当我们运行上面的程序时,输出将是:

Inside add(): 2
In main: 2

在上面的程序中,我们将c定义为add()函数内部的全局关键字。
然后,将变量c增加1,即c = c + 2。之后,我们调用该add()函数。最后,我们打印全局变量c。
如我们所见,函数之外的全局变量也发生了变化c = 2。

跨Python模块的全局变量

在Python中,我们创建一个模块config.py来保存全局变量,并在同一程序中的Python模块之间共享信息。

这是我们如何在python模块之间共享全局变量。

예제4:跨Python模块共享全局变量

创建一个config.py文件,以存储全局变量

a = 0
b = "empty"

update.py 파일을 생성하여 전역 변수를 변경합니다

import config
config.a = 10
config.b = "alphabet"

값 변화를 테스트하기 위해 main.py 파일을 생성합니다

import config
import update
print(config.a)
print(config.b)

main.py 파일을 실행할 때, 출력은 다음과 같습니다

10
alphabet

위에서는 config.py, update.py, main.py 세 개의 파일을 생성했습니다.

모듈 config.py에 저장됩니다ab의전역 변수. update.py 파일에서 config.py 모듈을 가져오고 수정합니다ab의 값입니다. 또한, main.py 파일에서 config.py와 update.py 모듈을 동시에 가져옵니다. 마지막으로, 전역 변수의 값을 변경 여부와 관계없이 출력하고 테스트합니다.

중첩 함수의 전역 변수

이는 중첩 함수에서 전역 변수를 사용하는 방법입니다.

예제5:중첩 함수에서 전역 변수 사용

def foo():
    x = 20
    def bar():
        global x
        x = 25
    
    print("bar 호출 전:", x)
    print("바로 bar 호출")
    bar()
    print("bar 호출 후:", x)
foo()
print("x가 주체 내에서:", x)

출력은 다음과 같습니다:

bar 호출 전:  20
바로 bar 호출
bar 호출 후:  20
x가 주체 내에서:  25

위 프로그램에서는 중첩된 함수 bar()에서 전역 변수를 선언했습니다. foo() 함수에서는 x에 대한 전역 키워드에 영향을 미치지 않습니다.
bar 호출 전후에서 변수 x는 지역 변수의 값을 받습니다. 즉, x =20. foo 함수 밖에서 변수 x는 bar 함수에서 정의된 값을 취하게 됩니다. 즉, x =25이유는 x에서 global 키워드를 사용하여 bar 함수(지역 범위) 내에서 전역 변수를 생성했기 때문입니다.
bar() 함수에서 어떤 변경 사항을 하였다면, 이 변경 사항은 지역 범위 밖에도 나타나게 됩니다. 즉, foo()에요.