Python Tutorial - Namescape and Scope
- Nome em Python
- Namespace em Python
- Escopo da variável em Python
- Usando o Scope e o Namespace em Python
Nesta seção, você aprenderá o namespace e o escopo de uma variável na programação Python.
Nome em Python
Um nome em Python é um identificador dado ao objeto. Python é uma linguagem de programação orientada ao objeto, o que significa que tudo é um objeto em Python e os nomes são usados para acessar objetos.
Por exemplo, quando se atribui um valor a uma variável x = 3
. Aqui 3
é um objeto e é armazenado em um local de memória (RAM). Esta localização de memória é uma localização de memória nomeada que poderia ser acessada pelo nome x
. O endereço deste objeto (3) pode ser obtido utilizando a função embutida id()
.
x = 3
print("id(3) =", id(3))
print("id(x) =", id(x))
id(3) = 1864160336
id(x) = 1864160336
Agora aqui o objeto 3
é armazenado em um local cujo nome é x
e, portanto, o endereço de ambos é o mesmo.
Quando você atribui o valor de x
a alguma outra variável vamos dizer y
e alterar o valor de x
, então x
terá uma nova localização e y
terá a localização do x
anterior. Isto é demonstrado abaixo:
x = 3
print("id(x) =", id(x))
x = 4
print("id(4) =", id(4))
print("id(x) =", id(x))
y = 3
print("id(y) =", id(y))
id(x) = 1864160336
id(4) = 1864160352
id(x) = 1864160352
id(y) = 1864160336
Você pode ver aqui o endereço de y
é igual ao do antigo x
.
Namespace em Python
Um namespace é uma coleção de nomes. Um namespace é um mapeamento de nome para um objeto e é implementado como um dicionário em Python. Namespaces garantem que cada nome usado em um programa é único.
Namespaces são criados quando o interpretador é iniciado, apagados quando a execução do programa é concluída. Este namespace contém todos os nomes incorporados, assim sempre que você precisar de uma função incorporada, por exemplo id()
você pode utilizá-la diretamente no seu programa.
Quando você chama uma função, é criado um espaço de nomes local que contém todos os nomes definidos.
Escopo da variável em Python
Quando você cria uma variável no seu programa, você pode não ter acesso a essa variável a partir de cada parte do programa. Isto é por causa do escopo das variáveis. Você tenta acessar variáveis a partir do namespace onde elas não estão definidas.
Um escopo pode ser definido como um lugar de onde você pode acessar seu espaço de nomes sem nenhum prefixo.
O escopo pode ser categorizado como:
- O escopo de uma função onde você tem nomes locais.
- Escopo de um módulo onde você tem variáveis globais.
- Escopo mais externo onde você tem nomes incorporados.
Quando você cria uma referência dentro de uma função, ela é procurada primeiro no namespace local e depois é procurada no namespace global; se não for encontrada em nenhum lugar, ela será procurada no namespace embutido.
Ao criar uma função aninhada, você terá um novo escopo dentro do escopo local.
Usando o Scope e o Namespace em Python
def outer():
x = 12
def inner():
y = 13
z = 14
Aqui, uma função aninhada é definida (função dentro de outra função). A variável y
está no namespace local aninhado da função interna, a variável x
está no namespace local da função externa e a variável z
está no namespace global.
Quando ela está dentro da função interna, a variável y
é uma variável local, x
é não-local e z
é global. A função interna não tem acesso às variáveis não-locais x
e globais z
.
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook