替换我的exec()代码位

时间:2016-08-14 05:09:57

标签: python-3.x

所以我有一个脚本允许我在命令行中键入内容,并让它显示相应的列表。例如,如果我运行它,并打印

以下是基本要点:

list_of_strings = ['mexico', 'america', 'canada']
list_of_lists = [ [0,0,0,3], [4,9,3,6], [5,6,7] ]


for name in range(len(list_of_strings)):
        exec(list_of_strings[name] + ' = list_of_lists[name]')

运行此功能,然后输入" america' (没有引号),返回[4,9,3,6]。

我的问题是当我想将这个位转换为函数时,比如

def my_zip(list_of_strings, list_of_lists):
    for name in range(len(list_of_strings)):
        return exec(list_of_strings[name] + ' = list_of_lists[name]')

my_zip(list_of_strings, list_of_lists)

它不再有效。 '美国' (无引号)不被视为变量。

我觉得我应该使用字典,但任何指针都会非常感激!

1 个答案:

答案 0 :(得分:0)

3个主要问题:

  1. exec不会返回任何内容。

  2. return循环中有for。它只会运行一次迭代。由于这一点以及exec什么都不返回的事实,它会在一次迭代后立即返回None

  3. 您正在使用exec开头。您应该编辑您的问题以包括您真正想要做的事情。可能有更好,更安全的方式。