eu uso python 3 porem me daeparo com algo curioso
if(__name__=='__main__'):
alguma_coisa()
e eu ainda n sei oque ele faz ou para que ele serve ou sua importancia pf me digam oque isso faz
eu uso python 3 porem me daeparo com algo curioso
if(__name__=='__main__'):
alguma_coisa()
e eu ainda n sei oque ele faz ou para que ele serve ou sua importancia pf me digam oque isso faz
Oi Daniel tudo bem?
Poderia colocar o link da aula que viu esse código para eu entender o contexto.
E sobre import
Importar suas funçoes
Olá Daniel!
Vi que você já fez cursos sobre Java então irei comparar ok?
O código:
if(__name__=='__main__'):
É um pouquinho semelhante ao:
public static void main(String[] args){}
__main__
é o nome interno que todo programa/módulo Python recebe quando é executado.
Imagine que você criou o seguinte script:
alura.py
print __name__
Quando você executar na linha de comando ele irá nos retornar: __main__
:
$ python alura.py
__main__
Quando importarmos ele veremos que isso muda:
>>> import alura
alura
Repare que nossa variavel __name__
agora retornou um valor diferente (alura) que foi o nome que demos para nosso módulo.
O __name__ == '__main__'
serve justamente para sabermos se o nosso programa está sendo executado como um programa ou sendo importado como um módulo.
Vamos ver um exemplo prático disso:
Imagine que você tem um módulo cheio de funções matemáticas que quer usar em outro módulo:
aluraMath.py
adc(a, b):
return a + b
sub(a,b):
return a - b
div(a,b):
return a / b
mult(a,b)
return a * b
Ai você decidiu colocar uns prints para testar seu código:
adc(a, b):
return a + b
sub(a,b):
return a - b
div(a,b):
return a / b
mult(a,b)
return a * b
print adc(1,1) # retorna 2
print sub(2,2) # retorna 0
print div(2,2) # retorna 1
print mult(3,3) # retorna 9
Se executarmos o código acima teremos o seguinte resultado:
$ python aluraMath.py
2
0
1
9
Até ai tudo bem, mas e se precisarmos importar nosso módulo para usar as funções que criamos?
>>> import aluraMath
2
0
1
9
Vixi, queriamos usar as funções do aluraMath e não ver esses números!!
O problema é que esses prints estão acontecendo de forma incondicional não importando se estamos executando ou importando.
Para resolver esse problema usamos o __name__ == '__main__'
:
adc(a, b):
return a + b
sub(a,b):
return a - b
div(a,b):
return a / b
mult(a,b)
return a * b
if __name__ == '__main__':
print adc(1,1) # retorna 2
print sub(2,2) # retorna 0
print div(2,2) # retorna 1
print mult(3,3) # retorna 9
Agora o programa terá um comportamento diferente quando executarmos na linha de comando ou importarmos como um módulo! :D
Espero que tenha ajudado!
Bons estudos! ^^