Para quê serve a variável __name__ do Python

Resumo: neste tutorial, você aprenderá sobre a variável __name__ Python e como usá-la efetivamente em módulos.

O que é a variável __name__ do Python?

Se você passou por algum código Python, provavelmente já viu a variável __name__ como a seguinte:

if __name__ == '__main__':
    main()

E você pode se perguntar qual é o valor da variável __name__.

Como a variável __name__ tem sublinhados duplos em ambos os lados, ela é chamada de nome dunder. O dunder significa double under scores.

A __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.

Frequentemente, você deseja escrever um script que possa ser executado diretamente ou importado como um módulo. A variável __name__ permite que você faça isso.

Quando você executa o script diretamente, o Python define a variável __name__ como '__main__'.

No entanto, se você importar um arquivo como um módulo, o Python definirá o nome do módulo para a variável __name__.

__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 variável __name__ 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__)

Em segundo lugar, crie um novo arquivo chamado app.py e importe o módulo billing:

import billing

Ao executar o app.py:

> python app.py

…a variável __name__ mostra o seguinte valor:

billing

Isso significa que o Python executa o arquivo billing.py quando você importa o módulo de cobrança para o arquivo app.py.

A variável __name__ no app.py para o nome do módulo que é billing.

Se você executar o billing.py como um script diretamente:

> python billing.py

… você verá a seguinte saída:

__main__

Neste caso o valor da variável __name__ está '__main__' dentro do billing.py.


Portanto, a variável __name__ permite verificar quando o arquivo é executado diretamente ou importado como um módulo.

Por exemplo, para executar a função print_billing_doc() quando billing.py é executado diretamente como um script, você pode adicionar a seguinte instrução ao módulo billing.py:

if __name__ == '__main__':
    print_billing_doc()

Em terceiro lugar, execute o billing.py como um script, você verá a seguinte saída:

Name    Price   Tax
Book    30      3.0
Pen     5       0.5

No entanto, ao executar o app.py, você não verá o bloco if executado porque a variável __name__ não está definida como '__main__' mas 'billing'.

Resumo

  • O Python atribui '__main__' à variável __name__ quando você executa o script diretamente e o nome do módulo se você importar o script como um módulo.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *