如何允许用户通过输入引用变量和其他数据结构?

How can I allow users to reference variables and other data structures via input?

example.py

dumpVar = ['a','b','c','d','e','f','g']

def examineVar():
  container = input('Which var would you like to examine? ')
  for i in range (len(container)):
    print(container[i])
                                                                                            .

Python 3.5(32 位)

>>> exec(open(r'c:\users\me\desktop\code\example.py').read())
>>> examineVar()
Which variable would you like to examine? _
                                                                                            .

下面是 运行 -- 我有一个名为 'example' 的 .py 文件,我正在从解释器 运行 中加载它以加载我可以使用的代码环境。这个特定的环境包含一个数组(已经填充)和一个带有一些基本命令的函数,这些命令用于return一次输入一行的信息。

我想做的是输入我通过脚本创建的变量名,并让函数句柄打印内容。

我意识到我可以很容易地 >>> dumpVar 来查看显示在一行中的数组 -- 但我正在尝试弄清楚如何传递...我猜是元信息...通过用户输入传递给解释器。如果这有任何意义。

无论如何我一直在尝试使用exec(),但是我把它放在函数中的任何地方都会产生异常,而且唯一一次没有产生异常,它只是打印了一个字符dumpVar 一次,每次都创建一个新行(当然,新行是所需的行为)。

那么,如何修改函数以生成变量的内容,而不是输入字符串的字符?

根据 OP 的评论更新。他的意图是通过输入来引用变量,他的原标题没有说清楚。解决方案是实现一个字典,通过字符串键引用 objects:

list_a = ['a', 'b', 'c', 'd', 'e', 'f']

my_variables = {'list_a' : list_a}

def examineVar():
    for i in my_variables[input('>>> ')]:
        print(i, end='')

    print('\n')

examineVar()

输出:

python3 variable_referencing.py
>>> list_a
abcdef

使用list():

>>> x = 'hello'
>>> list(x)
['h', 'e', 'l', 'l', 'o']
>>> 

修改函数:

def examineVar():
  container = list(input('Which var would you like to examine? '))
  for i in range (len(container)):
    print(container[i])

此外,无需在可迭代对象中定义范围 (range(len(container)) 这就足够了:

for i in container:
    print(i)

如果您想知道项目的索引以及项目,请使用 enumerate():

for i, v in enumerate(container):
    print("Index:{} - Value:{}".format(i, v)