Python:使用计数器来引用变量

时间:2019-01-18 22:11:46

标签: python

我破解了一个可行的脚本,但是我试图找到一种更简洁的方法。

以最简单的形式,我有两个模块:定义和脚本。

'definitions'具有变量列表,如下所示:

arrayUnion

我的目标是设置raspberrypi GPIO输入,但是定义文件由其他人管理。因此,我无法更改这些input0 = 5 input1 = 6 input2 = 4 语法。

“脚本”是指这些变量,例如:

inputX

但是我想将我的脚本简化为以下内容:

import definitions
list = [1,2,3]

if len(list) > 1:
   print(definitions.input0)
if len(list) > 2:
   print(definitions.input1)
if len(list) > 3:
   print(definitions.input2)

这会导致属性错误:“模块”没有属性“输入”。

我不确定如何用短语表达搜索问题,有没有办法迭代地引用“定义”中的变量?

2 个答案:

答案 0 :(得分:0)

首先,请不要将您的数据分配给list。它是list类的名称,覆盖它只会引起混乱。

您的问题,

print(definitions.input[index])

不起作用,因为definitions.input不是列表,并且实际上根本不存在。但是

print(getattr(definitions, "input"+str(index)))
只要"input"+str(index)的计算结果为input0或类似的值,

就会起作用。

答案 1 :(得分:0)

这是做类似事情的一种方法(确切的目标尚不清楚):

#!/usr/bin/env python3
// script.py

import definitions
Sequence = [1,2,3]

def setup(sequence):
    for key in sequence:
        print(key, getattr(definitions, f'input{key - 1}', 'None'))

if __name__ == '__main__':
    setup(Sequence)