首页 > 解决方案 > Python - 连接变量

问题描述

在 Python 3 中,有没有办法将字符串/变量连接到(另一个)变量?

假设我有一些名称相似的变量(为简单起见,它们是可变的;实际上,我想用类和对象来做):

var1 = 'Hello'
var2 = 'Greetings'

用户输入一个数字,脚本使用 else if 语句打印:

choice = input("Please select a number (1-2) >")

if choice = 1:
     print(var1)
elif choice = 2:
     print(var2)

但是我想要做的是直接打印而不必使用 else if/switch 语句/字典等。我想要它prints(var+choice),其中选择将连接到 var,所以如果选择 = 1,它将是print(var1);如果choice = 3,它会 print(var3)(这会给出一个错误,未定义的变量)。

如果没有办法做到这一点,那么打印具有相似名称的变量选择的最干净的方法是什么?

标签: pythonpython-3.8

解决方案


用于globals()动态获取变量值

globals函数返回模块范围内的变量字典,因此您可以获取var1var2使用

selected_greeting = globals()[f"var{choice}"] 

有关您可以访问哪些变量的警告,请参阅链接文档。

进一步阅读:getattr将让您动态获取其他对象的变量值。

使用字典或列表

我们最终访问var1var2通过字典,所以如果你的程序允许你可以使用字典或列表

# A dict example
# Note: I'm using var1 and var2 here for continuity only. 
# Give a more descriptive key if you want
greetings = {
  "var1": "hello",
  "var2": "greetings",
}
selected_greeting = greetings[f"var{choice}"]

# A list example
greetings = ["hello", "greetings"]
selected_greeting = greetings[int(choice) - 1] # Cast to int, input gives us strings. Also subtract 1 because lists are zero indexed

推荐阅读