首页 > 解决方案 > 在 Python 中打印与字符串同名的变量

问题描述

在我的项目中,我有用户制作的变量。如果用户给出与变量同名的字符串,我想要做的是打印变量。这是我认为的样子:

variable = 123
userInput = input("Enter a variable to print: ")
print(userInput)
# Instead of printing userInput, it will check if userInput is the name of a variable, 
# and print if it is.

用户将输入“变量”,然后打印123. 另请注意,变量将具有其自定义名称和数据。因此,如果变量名称不同,用户输入“变量”不会导致它被打印。

是的,我知道拥有用户制作的变量可能是个坏主意。我知道我在做什么。

标签: python

解决方案


您可以使用自己的变量为每个用户创建一个用户空间,即

def get_userspace(user):
    """ Returns current userspace of user. """
    # Here may be Postgres, Redis or just global userspaces
    global userspaces
    return userspaces.setdefault(user, {})

userspaces = {}
userspace = get_userspace(user)

然后将特定用户的所有输入放在他/她的用户空间中,以免干扰他人,也不重新定义对程序执行可行的本地/全局。然后使用您的代码稍加改进即可从该用户空间获取变量:

user_input = input("Enter a variable to print: ")
print(userspace.get(user_input))

推荐阅读