Resumo : neste tutorial, você aprenderá sobre a __name__
variável Python e como usá-la de forma eficaz em módulos.
O que é Python __name__
?
Se você examinou o código Python, provavelmente já viu a __name__
variável como a seguinte:
if __name__ == '__main__':
main()
Linguagem de código: Python ( python )
E você pode se perguntar qual __name__
é a variável.
Como a __name__
variável tem sublinhados duplos em ambos os lados, ela é chamada de dunder name . O dunder significa pontuação dupla
The __name__
é uma variável especial em Python. É especial porque o Python atribui um valor diferente a ele dependendo de como o script que o contém é executado.
Quando você importa um módulo, o Python executa o arquivo associado ao módulo.
Freqüentemente, você deseja escrever um script que possa ser executado diretamente ou importado como um módulo. A __name__
variável permite que você faça isso.
Quando você executa o script diretamente, o Python define a __name__
variável como '__main__'
.
No entanto, se você importar um arquivo como um módulo, o Python definirá o nome do módulo para a __name__
variável.
__name__
Exemplo de variável Python
Primeiro, crie um novo módulo chamado billing
que tenha duas funções: calculate_tax()
e print_billing_doc()
. Além disso, adicione uma instrução que imprima a __name__
variável na tela:
def calculate_tax(price, tax):
return price * tax
def print_billing_doc():
tax_rate = 0.1
products = [{'name': 'Book', 'price': 30},
{'name': 'Pen', 'price': 5}]
# print billing header
print(f'Name\tPrice\tTax')
# print the billing item
for product in products:
tax = calculate_tax(product['price'], tax_rate)
print(f"{product['name']}\t{product['price']}\t{tax}")
print(__name__)
Linguagem de código: Python ( python )
Segundo, crie um novo arquivo chamado app.py
e importe o billing
módulo:
import billing
Linguagem de código: Python ( python )
Quando você executa o app.py
:
> python app.py
Linguagem de código: CSS ( css )
…a __name__
variável mostra o seguinte valor:
billing
Linguagem de código: Python ( python )
Isso significa que o Python executa o billing.py
arquivo quando você importa o módulo de faturamento para o app.py
arquivo.
A __name__
variável no app.py
conjunto para o nome do módulo que é billing
.
Se você executar o billing.py
script diretamente:
> python billing.py
Linguagem de código: CSS ( css )
… você verá a seguinte saída:
__main__
Linguagem de código: Python ( python )
Neste caso o valor da __name__
variável está '__main__'
dentro de billing.py
.
Portanto, a __name__
variável permite verificar quando o arquivo é executado diretamente ou importado como módulo.
Por exemplo, para executar a print_billing_doc()
função quando ela billing.py
é executada diretamente como um script, você pode adicionar a seguinte instrução ao billing.py
módulo:
if __name__ == '__main__':
print_billing_doc()
Linguagem de código: Python ( python )
Terceiro, execute billing.py
como um script, você verá a seguinte saída:
Name Price Tax
Book 30 3.0
Pen 5 0.5
Linguagem de código: Python ( python )
No entanto, ao executar o app.py
, você não verá o if
bloco executado porque a __name__
variável não está definida como '__main__'
but 'billing'
.
Resumo
- Python atribui
'__main__'
à__name__
variável quando você executa o script diretamente e o nome do módulo se você importa o script como um módulo.