Python locals ()

O método locals () atualiza e retorna um dicionário da tabela de símbolos local atual.

Uma tabela de símbolos é uma estrutura de dados mantida por um compilador que contém todas as informações necessárias sobre o programa.

Isso inclui nomes de variáveis, métodos, classes, etc.

Existem basicamente dois tipos de tabelas de símbolos.

  1. Tabela de símbolos globais
  2. Tabela de símbolos locais

Uma tabela de símbolos Global armazena todas as informações relacionadas ao escopo global do programa e é acessada em Python usando o método globals ().

O escopo global contém todas as funções, variáveis ​​que não estão associadas a nenhuma classe ou função.

Da mesma forma, a tabela de símbolos local armazena todas as informações relacionadas ao escopo local do programa e é acessada em Python usando o locals()método.

O escopo local pode estar dentro de uma função, dentro de uma classe, etc.

Leitura recomendada: namespace e escopo em Python

Sintaxe de locais ()

A sintaxe do locals()método é:

 locais ()

locals () Parâmetros

locals() método não leva nenhum parâmetro.

Valor de retorno de locais ()

locals() o método atualiza e retorna o dicionário associado à tabela de símbolos local atual.

Exemplo 1: Como locals () funciona em Python?

 locals()

Resultado

 ('In': ('', 'locals ()'), 'Out': (), '_': '', '__': '', '___': '', '__builtin__':, ' __builtins__ ':,' __name__ ':' __main__ ',' _dh ': (' / home / repl '),' _i ':' ',' _i1 ':' locals () ',' _ih ': (' ', 'locals ()'), '_ii': '', '_iii': '', '_oh': (), '_sh':, 'exit':, 'get_ipython':>, 'sair':) 

Nota: globals() e a locals()tabela de símbolos para o ambiente global é a mesma.

Exemplo 2: Como locals () funciona dentro de um escopo local?

 def localsNotPresent(): return locals() def localsPresent(): present = True return locals() print('localsNotPresent:', localsNotPresent()) print('localsPresent:', localsPresent())

Resultado

 localsNotPresent: () localsPresent: ('present': True) 

Exemplo 3: Atualizando valores de dicionário locals ()

 def localsPresent(): present = True print(present) locals()('present') = False; print(present) localsPresent()

Resultado

 Verdade verdade 

Ao contrário do globals()dicionário que reflete a mudança na tabela global real, o locals()dicionário não pode alterar as informações dentro da tabela de locais.

Artigos interessantes...