Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Biblioteca importada fora da função

FIquei com a seguinte dúvida: Ele importou o random fora da função principal (jogar), por acaso quando formos escolher a forca no projeto jogos.py, vai gerar um erro ?

3 respostas

O Python limita seus blocos de códigos por indentação, portanto o que você declara dentro de uma indentação, só funciona dentro dela ou da indentação dentro dela. O professor importou a classe random no escopo do código fora de qualquer indentação, logo a classe random pode ser usada em qualquer parte do código, seja do mesmo arquivo, seja por arquivos externos que importem esse arquivo.py.

Se fosse importado dentro de uma indentação, e por ventura houvesse a tentativa de utilizar fora da indentação a classe importada, aí sim geraria um erro. Situação demonstrada abaixo:

import random

random... #Ok pode ser usado 

for blabla in blabla:
        random...  #Ok pode ser usado

        if blabla :
                random... #Ok pode ser usado

E

def funcao():
    import random
    random... #ok pode ser usado

    if blabla:
        random... #ok pode ser usado, ainda estamos dentro da identação da funcao()

        for blabla in blabla:
            random... #ainda pode ser usado pois ainda está dentro da identação da funcao


variavel = random... #Opa, erro. Não importamos random no escopo principal do programa, somente dentro da funcao()
#Será gerado uma exception NameError dizendo que não reconhece o que é "random"

entendi, como ele fez a importação do arquivo todo, não importa se a biblioteca ficou fora da função certo ?

import random #fora da def 
def jogar ():
    código do jogo

eu no caso pensei que teria que colocar dentro da def para funcionar:

def jogar():
      import random
      código do jogo
solução!

Aí só funcionaria dentro da função jogar(), qualquer tentativa de usar fora resultaria em erro