Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python—创建20个变量的有效方法?_Python_Variables_Exec_Creation - Fatal编程技术网

Python—创建20个变量的有效方法?

Python—创建20个变量的有效方法?,python,variables,exec,creation,Python,Variables,Exec,Creation,我需要用Python创建20个变量。变量都是必需的,它们最初应该是空字符串,空字符串稍后将被其他字符串替换。当需要变量时,我无法根据需要创建它们,因为我还有一些if/else语句需要检查变量是否仍然为空或是否已经等于其他字符串 而不是写作 variable_a = '' variable_b = '' .... 我在想 list = ['a', 'b'] for item in list: exec("'variable_'+item+' = '''") 这段代码不会导致错误,但仍然

我需要用Python创建20个变量。变量都是必需的,它们最初应该是空字符串,空字符串稍后将被其他字符串替换。当需要变量时,我无法根据需要创建它们,因为我还有一些if/else语句需要检查变量是否仍然为空或是否已经等于其他字符串

而不是写作

variable_a = ''
variable_b = ''
....
我在想

list = ['a', 'b']
for item in list:
    exec("'variable_'+item+' = '''")
这段代码不会导致错误,但仍然没有达到我预期的效果-变量不是以“variable_1”等名称创建的

我的错在哪里

谢谢,樵夫

我的错在哪里

可能有三个错误。第一个是
'variable\'+'a'
显然不等于
'variable\'u1'
。第二个是
exec
的参数中的引号。做

for x in list:
    exec("variable_%s = ''" % x)
获取
变量a

第三个错误是您没有为此使用
列表
dict
。照办

variable = dict((x, '') for x in list)

然后使用
variable['a']
获取“variable”
a
的内容。不要与语言对抗。使用它。

我和其他人有同样的问题(不使用列表或哈希),但如果需要,您可以尝试以下方法:

for i in xrange(1,20):
    locals()['variable_%s' %i] = ''

我想你只需要在本地范围内使用它。有关本地人的更多信息,请参阅。从未使用过它,但类似的方法可能有效:

liste = ['a', 'b']
for item in liste:
    locals()[item] = ''

为什么是变量,而不是20个元素的列表或字典?听Marcelo Cantos,使用dict/list。。改为写入列表=范围(1,20)。我同意Marcelo的观点,为什么不使用列表或字典呢?你必须说
exec(“variable”+item+“=”)
,但这是一个糟糕的主意,所以按照larsmans的建议去做。你不能修改
locals()的返回值。
我不知道确切的原因。。。这个例子是有效的。。。抱歉回答不好:)手册上说“注意:本词典的内容不应修改;更改可能不会影响解释器使用的本地变量和自由变量的值。”这种回答至少在两个方面是不好的:它们不正确(不起作用)和它们导致错误designs@Simon,我看不到手册中关于它的注释不应该改变,所以接受它不好的事实,但它确实有效。请参阅@rajasuar,仅仅因为它恰好在python的一个实现中工作,并不意味着您应该使用它。您的代码可能会在其他实现中中断。@rajasuar那么我希望您只在python中使用toplevel,因为一旦您开始在函数中使用此方法,它打破了:我对向他展示他如何做他尝试过的事情是好主意还是坏主意感到矛盾……第四个错误是使用
list
作为变量名来使用
exec
有一个特别的地狱圈留给你。@Jakob,你是说恶魔对你做了什么?我从来没有走那么远,因为我在他们发生之前就知道了eval的危险。