Enviar um café pro programador

Variável Global em Python - keyword global

Neste tutorial, vamos te explicar o que é uma variável global, para que serve e como usar em Python.

Tutorial anterior: Argumentos Nomeados e Posicionais
Veja também: Como ser programador Python Profissional




Variável Global em Python

Nos artigos anteriores de nosso curso de Python, falamos bastante sobre variáveis, escopo, que as variáveis dentro de uma função podem existir somente lá, que ao fazer uma passagem por valor para uma função, o valor original da variável não é alterado etc etc.

Mas, por muitas vezes, é bem útil ter variáveis que 'existem' e são visíveis para todos os elementos de um programa em Python.

E é para isso que servem as variáveis globais.

Se uma variável é definida e usada somente dentro de uma função, ela é dita variável local.

Então, por lógica, para uma variável ser global e para poder ser usada em todas as funções, ela deve ser definida fora das funções.

Keyword global

Para usarmos uma variável global, devemos fazer, basicamente, duas coisas.
Definir a variável fora do escopo das funções
Dentro da função, usar a linha de comando:
global nome_variavel



Onde 'nome_variavel' é o nome de sua variável global.
Vamos ver um exemplo para entender melhor.

Exemplo de variável global

Escreva um script em Python que pergunta o preço de um produto e mostre:
Preço original
Desconto em porcentagem
Valor do desconto
Preço com o desconto

O desconto quem define é o gerente, na forma de variável global.

Vamos lá.
Nossa variável global se chamará 'desc' e terá inicialmente o valor 10 (10%).
Dentro da função desconto(), precisamos inserir a linha:
global desc

Isso diz ao Python:
"Ei Pyzinho (você é íntimo já), essa variável 'desc' é global, tá?
Usa aquela que foi definida fora da função, pelo amor de deus, não vai usar uma variável local!"

Veja como fica nosso código:

# Desconto do gerente
desc = 10 # 10%

def desconto(valor):
    global desc
    print("Preço original   : R$ ",valor)
    print("Desconto         : ", desc,"%")

    desc /= 100
    print("Valor desconto   : ", valor*desc)
    print("Preço c/ desconto: ", valor*(1-desc) )

val = float(input("Preço do produto: "))
desconto(val)      

Variável Global - Onde usar ? Para que servem ?

Como o nome diz, ela serve para ser 'vista' e alterada por todos, por qualquer função.

Se você tiver um projeto onde uma informação deve ser vista por todos e eles possam alterar essa variável, use a global. Porém, cuidado.

De uma maneira geral, é complicado usar ela, pois todos tem acesso, todos podem mexer nela, e isso pode tornar o processo de debugging (achar erros e problemas) bem complicado, afinal, o problema pode vir de qualquer lado.

Use com cuidado, e se puder evitar, evite.

2 comentários:

  1. Como eu resolvi o exercício:

    DESCONTO = 10


    def produto():
    preco = float(input("Informe o preço do produto: "))
    desconto_em_porcentagem = (preco * DESCONTO) / 100
    print("Preço original: ", preco)
    print("Desconto em porcentagem {}%".format(DESCONTO))
    print("O valor do desconto é de R$ {}".format(desconto_em_porcentagem))
    print("O valor com o desconto é de R$ {}".format(preco -
    desconto_em_porcentagem))


    produto()

    ResponderExcluir
  2. Como eu resolvi:

    DESCONTO = 10


    def produto():
    preco = float(input("Informe o preço do produto: "))
    desconto_em_porcentagem = (preco * DESCONTO) / 100
    print("Preço original: ", preco)
    print("Desconto em porcentagem {}%".format(DESCONTO))
    print("O valor do desconto é de R$ {}".format(desconto_em_porcentagem))
    print("O valor com o desconto é de R$ {}".format(preco -
    desconto_em_porcentagem))


    produto()

    ResponderExcluir