出于示例目的...
for x in range(0,9):
string'x' = "Hello"
所以我最终得到了string1,string2,string3 ...都等于“ Hello”
x = ["Hello" * 9]
通过以下方式访问它:x[0], x[1] ...
如果您想以其他方式使用它,我想您必须给我们更多的代码背景。
SyntaxError: Use a data structure.
出于示例目的...
for x in range(0,9):
string'x' = "Hello"
所以我最终得到了string1,string2,string3 ...都等于“ Hello”
x = ["Hello" * 9]
通过以下方式访问它:x[0], x[1] ...
如果您想以其他方式使用它,我想您必须给我们更多的代码背景。
SyntaxError: Use a data structure.
Answers:
你当然可以; 它被称为字典:
d = {}
for x in range(1, 10):
d["string{0}".format(x)] = "Hello"
>>> d["string5"]
'Hello'
>>> d
{'string1': 'Hello',
'string2': 'Hello',
'string3': 'Hello',
'string4': 'Hello',
'string5': 'Hello',
'string6': 'Hello',
'string7': 'Hello',
'string8': 'Hello',
'string9': 'Hello'}
我说的有点难以理解,但实际上将一个值与另一个值相关联的最佳方法是字典。这就是它的设计目的!
这真是个坏主意,但是...
for x in range(0, 9):
globals()['string%s' % x] = 'Hello'
然后例如:
print(string3)
会给你:
Hello
但是,这是不好的做法。如其他人建议的那样,您应该改用字典或列表。当然,除非您真的想知道如何做,但不想使用它。
globals()
而不是简单的dict
。
创建变量变量名根本没有意义。为什么?
exec
或globals()
exec/globals()
再次使用使用列表要容易得多:
# 8 strings: `Hello String 0, .. ,Hello String 8`
strings = ["Hello String %d" % x for x in range(9)]
for string in strings: # you can loop over them
print string
print string[6] # or pick any of them
不要使用字典
import sys
this = sys.modules[__name__] # this is now your current namespace
for x in range(0,9):
setattr(this, 'string%s' % x, 'Hello')
print string0
print string1
print string2
print string3
print string4
print string5
print string6
print string7
print string8
不要使用字典
globals()存在风险,因为它会给您提供当前命名空间指向的内容,但是这可能会发生变化,因此修改globals()的返回值不是一个好主意
for x in range(9):
exec("string" + str(x) + " = 'hello'")
这应该工作。
我会使用一个列表:
string = []
for i in range(0, 9):
string.append("Hello")
这样,您将拥有9个“ Hello”,并且可以像这样单独获取它们:
string[x]
哪里 x
可以找到您想要的“ Hello”。
因此,print(string[1])
将打印Hello
。
string.append("Hello")
。
我认为这里的挑战不是要调用global()
我将为要保存的(动态)变量定义一个列表,然后将其附加到for循环中。然后使用单独的for循环查看每个条目,甚至执行其他操作。
这是一个示例-我在不同的分支机构都有许多网络交换机(例如2到8之间)。现在,我需要确保有一种方法可以确定在任何给定分支上有多少个可用交换机(或活动ping测试),然后对它们执行一些操作。
这是我的代码:
import requests
import sys
def switch_name(branchNum):
# s is an empty list to start with
s = []
#this FOR loop is purely for creating and storing the dynamic variable names in s
for x in range(1,8,+1):
s.append("BR" + str(branchNum) + "SW0" + str(x))
#this FOR loop is used to read each of the switch in list s and perform operations on
for i in s:
print(i,"\n")
# other operations can be executed here too for each switch (i) - like SSH in using paramiko and changing switch interface VLAN etc.
def main():
# for example's sake - hard coding the site code
branchNum= "123"
switch_name(branchNum)
if __name__ == '__main__':
main()
输出为:
BR123SW01
BR123SW02
BR123SW03
BR123SW04
BR123SW05
BR123SW06
BR123SW07
使用字典应该是保留变量和关联值的正确方法,您可以使用以下方法:
dict_ = {}
for i in range(9):
dict_['string%s' % i] = 'Hello'
但是,如果要将变量添加到局部变量中,可以使用:
for i in range(9):
exec('string%s = Hello' % i)
例如,如果要为它们分配值0到8,则可以使用:
for i in range(9):
exec('string%s = %s' % (i,i))
字典可以包含值,并且可以使用update()方法添加值。您希望系统创建变量,因此您应该知道保留位置。
variables = {}
break_condition= True # Dont forget to add break condition to while loop if you dont want your system to go crazy.
name = “variable”
i = 0
name = name + str(i) #this will be your variable name.
while True:
value = 10 #value to assign
variables.update(
{name:value})
if break_condition == True:
break