python - 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)
(这会给出一个错误,未定义的变量)。
如果没有办法做到这一点,那么打印具有相似名称的变量选择的最干净的方法是什么?
解决方案
用于globals()
动态获取变量值
globals函数返回模块范围内的变量字典,因此您可以获取var1
或var2
使用
selected_greeting = globals()[f"var{choice}"]
有关您可以访问哪些变量的警告,请参阅链接文档。
进一步阅读:getattr将让您动态获取其他对象的变量值。
使用字典或列表
我们最终访问var1
并var2
通过字典,所以如果你的程序允许你可以使用字典或列表
# 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
推荐阅读
- r - 带有 ggplot2 的双比例图:为添加的变量添加图例条目
- javascript - React - 无法在 Heroku 上渲染图像
- android - Android ble 扫描后台扩展广告
- python - 如何在python中模拟电子邮件机密信息
- python - 我们如何加载基于 json 数据创建的配置单元表以使用 spark.sql 触发数据帧?
- r - 提取时间最小的日期时间值R
- authentication - 没有用户登录的 Outlook 日历 API
- javascript - JS 模块模式保持值
- c# - 如果一个用户取消他们的线程,则取消所有线程
- azure-devops - 在 Azure DevOps 中创建项目 - 权限修正?