当在函数内部时,Python使用vars()[mystring]基于另一个变量创建变量

时间:2018-09-13 19:15:52

标签: python

我有以下任务。

“创建5个名为factorN的变量,其中N是1到5的数字,并将它们分别设置为1到5。”

具体来说,分配看起来像这样。

def exercise()
    #Create 5 variables named factorN where N is the numbers 1 to 5, 
    #and set them 1 through 5 respectively.

    # ------ Place code below here \/ \/ \/ ------

    # ------ Place code above here /\ /\ /\ ------

    return factor1, factor2, factor3, factor4, factor5

当我在函数之外运行以下代码时,它可以正常工作。

for n in range(1,6):
    name = "factor" + str(n)
    vars()[name] = n

 print(factor1) #prints 1
 print(factor2) #prints 2

但是当我尝试将这段代码放入函数中时,并且如果我还没有先运行上面的函数……

def exercise():
    for n in range(1,6):
        name = "factor" + str(n)
        vars()[name] = n
    return factor1, factor2, factor3, factor4, factor5

exercise()

然后出现以下错误:

“ NameError:名称'factor1'未定义。”

有人知道在函数内部工作的vars()[]的替代方法吗?我不希望变量factor1存在于函数之外。

我已经提交了此作业,但是最初我使用globals()而不是vars()。这通过了exercise()的单元测试,返回数字1-5,但是由于将factor1创建为全局变量,因此被标记为错误。我现在了解了在函数内部创建全局变量的风险,但是我不知道如何将factor1作为变量仅存在于函数内部。

0 个答案:

没有答案