Skip to content

[Pituguês] Escopo de Variáveis e Shadowing #1018

@VictorFrancelino

Description

@VictorFrancelino

Em Python

O Python possui regras estritas de escopo (LEGB - Local, Enclosing, Global, Built-in). Quando atribuímos um valor a uma variável dentro de uma função, o Python entende que estamos criando uma nova variável local, mesmo que já exista uma variável global com o mesmo nome. A variável global permanece inalterada fora da função.

Exemplo:

x = 10

def teste():
    x = 5     # Cria uma NOVA variável 'x' apenas para esta função
    print(x)  # Imprime a local (5)

teste()
print(x)      # Imprime a global (10)

# Resultado:
# 5
# 10

Em Pituguês

Atualmente, o Pituguês não parece diferenciar escopo de atribuição local vs global. Ao atribuir um valor dentro da função (x = 5), o interpretador altera a variável global original em vez de criar uma local. Isso causa efeitos colaterais indesejados.

Exemplo do comportamento incorreto:

x = 10

funcao teste():
    x = 5      # Está sobrescrevendo a global
    escreva(x)

teste()
escreva(x)     # A global foi alterada permanentemente

# Resultado atual:
# 5
# 5

Issue

Ajustar o sistema de ambiente/escopo do interpretador.

Metadata

Metadata

Assignees

No one assigned

    Labels

    💎 recompensa-10Pagamos recompensa: 10 dólarespituguêsItem específico do dialeto Pituguês

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions