在 Python 中将字符串转换为变量名

Sahil Bhosale 2024年2月15日
  1. 在 Python 中使用 globals()locals() 将字符串转换为变量名
  2. 在 Python 中使用 exec() 将字符串转换为变量名
在 Python 中将字符串转换为变量名

在 Python 中,可以通过多种方法将字符串值转换为变量的名称。在本文中,我们将讨论实现此目标的各种方法。

有些人可能想这样做,以便在执行 Python 程序时动态定义变量名。在开发可用于生产环境的软件时,建议不要使用以下所示的方式将字符串转换为变量名,因为这可能会引起一些问题。是的,可以实现这一点,但是在执行此操作时请务必谨慎。

在 Python 中使用 globals()locals() 将字符串转换为变量名

globals()

Python 中的 globals() 函数返回当前全局符号表的字典。全局符号表存储与程序的全局范围有关的所有信息,可以使用 globals() 函数进行访问。

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

输出:

使用 globals()函数将字符串转换为变量名

我们在这里要做的第一件事是使用 input() 函数从用户那里获取输入,并在其中传递一个字符串 Enter a string for a variable name:。然后,无论用户输入什么值,该值都将存储在变量 user_input 中。在这里,我们希望用户输入 apple 作为字符串值,然后将其存储在 user_input 中。如果用户输入的内容不是 apple,则程序将通过 NameError: name 'variable' is not defined 的错误提示。这是因为我们也在打印 apple 的值,然后稍后在我们的代码中检查它的类型。

如果用户输入了正确的值,我们可以使用 globals() 修改全局字典,以修改全局字典,并将任何值分配给变量 apple。在这里,我们为变量 apple 分配了 50

locals()

Python 中的 locals() 函数返回当前本地符号表的字典。可以通过 locals() 函数访问本地符号表。locals() 函数的工作方式几乎与 globals() 函数相同。唯一的区别是 locals() 可以访问本地符号表,而 globals() 可以访问全局符号表并返回字典。

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

输出:

使用 globals()函数将字符串转换为变量名

此代码也与 globals() 相同。唯一的区别是我们在这里使用了 locals() 函数。

在 Python 中使用 exec() 将字符串转换为变量名

完成此操作的另一种方法是在 Python 中使用 exec() 函数。exec() 函数用于动态执行 Python 程序。我们有一个变量名称,其中存储了一个字符串值 Elon

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

输出:

100

exec() 函数内部,我们有%s%d 分别用作字符串值和十进制值的占位符。这意味着我们将在赋值运算符 = 的帮助下为字符串赋一个整数值。%s%d 都包含在引号""内。然后我们有一个括号,里面有 2 个东西,第一个是我们创建的变量,即 name,其中包含值 Elon,第二个是整数 100

在这里,将代替该变量中的值代替 name 变量。整数 100 将分配给 ElonElon 成为变量名,如果你打印它,将得到 100 作为输出。

作者: Sahil Bhosale
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

相关文章 - Python String

相关文章 - Python Variable