Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Escopo de variáveis em Python

Fiz o código utilizando with e list comprehension da seguinte forma:

with open('frutas.txt', 'r') as arquivo:
    palavras = [fruta.strip() for fruta in arquivo]
    index_aleatorio = random.randrange(0, len(palavras))

Fiquei em dúvida com relação ao escopo da variável index_aleatorio, uma vez que está dentro do with. Se eu, por exemplo, inicializo com um valor zero, antes do with, o Pycharm dá a dica de remover essa declaração. As variáveis locais em Python são acessíveis dentro de toda uma função, mesmo que sua declaração seja feita dentro de estruturas condicionais ou de repetição, etc?

1 resposta
solução!

Boa noite Dayane, no caso do Python o escopo das variáveis sempre são a função que ela foi declarada mesmo que já esteja dentro de um with, for, if ou qualquer outro. Assim você pode fazer algo como

with open('frutas.txt', 'r') as arquivo:
    palavras = [fruta.strip() for fruta in arquivo]
    index_aleatorio = random.randrange(0, len(palavras))

print(index_aleatorio)

Caso a variável seja declarada num módulo o escopo será todo o módulo.