Nuances do escopo em Python
Vamos considerar os nuances importantes do trabalho com variáveis locais e globais.
Suponha que temos uma variável global num.
Vamos criar uma função func
que irá exibir a variável global num
no console:
num = 1
def func():
print(num)
func() # exibirá 1
E agora vamos declarar uma variável local num
na linha abaixo da função print. Após
a execução do código, um erro será exibido no console.
Isso acontece porque o Python
dentro da função interpreta num
apenas como uma variável local que
ainda não foi declarada:
num = 1
def func():
print(num) # exibirá um erro
num = 2
Agora vamos reescrever o código dentro da função
para que o valor da variável num
aumente em 2:
num = 1
def func():
num += 2 # exibirá um erro
O erro é causado porque a expressão num += 2
representa a seguinte escrita:
num = num + 2
No entanto, a própria variável local à qual a adição está sendo feita ainda não foi declarada. E, consequentemente, o Python exibe um erro, pois não é possível adicionar um número a um valor inexistente.
Qual será o resultado da execução do seguinte código:
tst = '12'
def func():
tst = 12
return tst
print(tst)
Qual será o resultado da execução do seguinte código:
tst = 'abc'
def func():
tst = tst.upper()
return tst
func()
print(tst)
Qual será o resultado da execução do seguinte código:
tst = 'abc'
def func():
txt = tst.upper()
return txt
print(func())
print(tst)