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

Tutorial Básico do Python

Controle de Fluxo do Python

Função no Python

Tipos de Dados do Python

Operações de Arquivos do Python

Objetos e Classes do Python

Data e Hora do Python

Conhecimentos Avançados do Python

Manual de Referência do Python

Palavra-chave Global no Python

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

全局关键字简介

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

全局关键字规则

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

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

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

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

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

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

让我们举个实例。

Exemplo1:从函数内部访问全局变量

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

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

1

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

Exemplo2:从函数内部修改全局变量

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

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

UnboundLocalError: local variable 'c' referenced before assignment

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

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

Exemplo3:使用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模块之间共享全局变量。

Exemplo4:跨Python模块共享全局变量

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

a = 0
b = "empty"

Crie um arquivo update.py para alterar a variável global

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

Crie um arquivo main.py para testar a variação dos valores

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

Quando executamos o arquivo main.py, a saída será

10
alphabet

No texto acima, criamos três arquivos: config.py, update.py e main.py.

o módulo config.py armazenaaeo bvariáveis globais. No arquivo update.py, importamos o módulo config.py e alteramosaebseu valor. Da mesma forma, no arquivo main.py, importamos os módulos config.py e update.py. Finalmente, imprimimos e testamos o valor das variáveis globais, independentemente de elas terem sido alteradas.

Variáveis globais em funções aninhadas

Esta é a maneira de usar variáveis globais em funções aninhadas.

Exemplo5:Uso de variáveis globais em funções aninhadas

def foo():
    x = 20
    def bar():
        global x
        x = 25
    
    print("Antes de chamar bar: ", x)
    print("Chamar bar imediatamente")
    bar()
    print("Depois de chamar bar: ", x)
foo()
print("x no corpo: ", x)

A saída é:

Antes de chamar bar:  20
Chamar bar imediatamente
Depois de chamar bar():  20
x no corpo:  25

No programa acima, declaramos uma variável global dentro da função aninhada bar(). Dentro da função foo(), x não tem impacto na palavra-chave global.
Antes e depois de chamar bar(), a variável x aceita o valor do variável local, ou seja, x =20. Fora da função foo(), a variável x adotará o valor definido na função bar, ou seja, x =25。Isso acontece porque usamos a palavra-chave global em x dentro da função bar (escopo local).
Se fizermos qualquer alteração na função bar(), essas alterações aparecerão fora do escopo local, ou seja, em foo().