Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.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中调用字符串作为变量_Python_String_Variables - Fatal编程技术网

在python中调用字符串作为变量

在python中调用字符串作为变量,python,string,variables,Python,String,Variables,我在python中创建了一个名为SignalParam的类,该类包含不同的属性(频率、电压、时间等) 我想创建许多这种类型的实例 vars()['Segment'+str(segment_number)] = SignalParam() 这行正在运行,我可以创建变量“Segment1”、“Segment2” 我的问题是:我想把这些变量称为 "Segment"+segment_number.freqency=33 在这里使用字典可能更好。用段={}定义一个。然后,您可以通过在字典中键入段号来创

我在python中创建了一个名为SignalParam的类,该类包含不同的属性(频率、电压、时间等)

我想创建许多这种类型的实例

vars()['Segment'+str(segment_number)] = SignalParam()
这行正在运行,我可以创建变量“Segment1”、“Segment2”

我的问题是:我想把这些变量称为

"Segment"+segment_number.freqency=33

在这里使用字典可能更好。用
段={}
定义一个。然后,您可以通过在字典中键入段号来创建
SignalParam

segments[segment_number] = SignalParam()
然后像这样使用对象:

segments[segment_number].frequency = 33

这是不好的风格。改为使用字典和简单键访问:

 d = {}
 d['Segment'+str(segment_number)] = SignalParam()
 d['Segment'+str(segment_number)].frequency = 33

您不应该使用
vars
的原因是,这意味着您要创建全局变量,您应该避免这样做。鉴于您的访问方式,您甚至不需要它。

不是最安全的解决方案,但您可以使用exec:

exec("Segment"+segment_number+".frequency=33")

这似乎更适合作为字典。为什么不将键值设置为一个像上面所说的那样构造的字符串呢
my_dict[“Segment”+Segment_number.frequency]=33
最好忘记存在
exec
。在我学习python的15年中,我发现2.3版本的合法性在元编程中有着深刻的应用。这就像给一个蹒跚学步的孩子一把加特林枪。不知道它是做什么的,但很有趣…迪茨,你有合法用途的链接吗?我很好奇,作为一个以前蹒跚学步的孩子,他不再认为盖特枪有任何用处。@AlexanderHuszagh我记得这是一个:重新创建一个修饰函数的签名,这样你就可以得到正确的错误消息