Converter uma string em nome de variável em Python

Sahil Bhosale 30 janeiro 2023
  1. Converter String em Nome de Variável usando globals() e locals() em Python
  2. Converter String em Nome de Variável usando exec() em Python
Converter uma string em nome de variável em Python

Em Python, existem várias maneiras de converter um valor de string em um nome de variável. Neste artigo, discutiremos várias maneiras de fazer isso.

Algumas pessoas podem querer fazer isso para definir um nome de variável dinamicamente enquanto o programa Python está em execução. Converter uma string em um nome de variável usando as maneiras mostradas abaixo não é recomendado durante o desenvolvimento de software pronto para produção porque isso pode causar alguns problemas. Sim, é possível conseguir isso, mas tenha cuidado ao fazer isso.

Converter String em Nome de Variável usando globals() e locals() em Python

globals()

A função globals() em Python retorna o dicionário da tabela de símbolos global atual. Uma tabela de símbolos globais armazena todas as informações relacionadas ao escopo global do programa, que podem ser acessadas usando a função globals().

user_input = input("Enter string for variable name: \n")
globals()[user_input] = 50
print(apple)
print(type(apple))

Resultado:

Converta string em nome de variável usando a função globals()

A primeira coisa que estamos fazendo aqui é obter a entrada do usuário usando a função input() e passando uma string Enter a string for a variable name: dentro dela. Então, qualquer valor que um usuário inserir, esse valor será armazenado dentro da variável user_input. Aqui, esperamos que o usuário insira apple como um valor de string que será armazenado dentro de user_input. Se o usuário inserir um valor diferente de apple, o programa passará por um erro como NameError: name 'variable' is not defined. É porque também estamos imprimindo o valor de apple e, em seguida, verificando o tipo dele mais tarde em nosso código.

Se o usuário inseriu o valor correto, podemos modificar o dicionário global usando globals() para modificar o dicionário global e atribuir qualquer valor à variável apple. Aqui, atribuímos 50 à variável apple.

locals()

A função locals() em Python retorna o dicionário da tabela de símbolos local atual. Uma tabela de símbolos local pode ser acessada com a ajuda da função locals(). A função locals() funciona quase da mesma forma que a função globals(). A única diferença é que locals() pode acessar a tabela de símbolos local, e globals() pode acessar a tabela de símbolos global e retorna um dicionário.

user_input = input("Enter string for variable name: \n")
locals()[user_input] = 50
print(apple)
print(type(apple))

Resultado:

Converta string em nome de variável usando a função globals()

Este código também funciona da mesma maneira que o de globals(). A única diferença é que usamos a função locals() aqui.

Converter String em Nome de Variável usando exec() em Python

Outra maneira de fazer isso é usando a função exec() em Python. A função exec() é usada para executar o programa Python dinamicamente. Temos uma variável name dentro da qual armazenamos um valor de string Elon.

name = "Elon"
exec("%s = %d" % (name, 100))
print(Elon)

Resultado:

100

Dentro da função exec(), temos %s e %d, usados ​​como um espaço reservado para o valor da string e o valor decimal, respectivamente. Isso significa que atribuímos um valor inteiro a uma string com a ajuda do operador de atribuição =. Ambos %s e %d estão entre as aspas =. Então temos parênteses dentro dos quais temos 2 coisas, a primeira é a variável que criamos, ou seja, name, que contém o valor Elon, e a segunda, um inteiro 100.

Aqui, em vez da variável name, o valor dentro dessa variável será substituído. O número inteiro 100 será atribuído a Elon. Elon torna-se um nome de variável e, se imprimi-lo, obterá 100 como saída.

Sahil Bhosale avatar Sahil Bhosale avatar

Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.

LinkedIn

Artigo relacionado - Python String

Artigo relacionado - Python Variable