def doSomething(index):
if index == 0:
while flag1:
do stuff
elif index == 1:
while flag2:
do stuff
...
在多线程环境中,flag1
和{
有没有办法做到这一点?在
编辑:
1.看到一些人建议list,问题是,像这样的列表flags = [flag1, flag2, flag3, ...]
假设flag1 = True
,flag2 = False
,flag3 = True
,这使得{flag1 = False
,flags
不会相应地改变,所以这肯定行不通。在
{1美元^
2.事实上,我发现了一个原始答案,建议while [flag1, flag2, flag3, ...][index]
,而且它确实有效!只是不知道他为什么删除了他的答案?在
有趣的部分:
刚刚测试了以下部分:
^{3}$它不会起作用,但有趣的是,这实际上起作用了:
def doSomething(index):
while [flag1, flag2, flag3][index]:
do stuff
所以我假设[flag1, flag2, flag3][index]
实际上返回原始变量?有人能再解释一点吗?在
使用
ternary
运算符。在对于这个问题,可能有一个更优雅的设计解决方案,但是要避开列表中没有更新的变量,只需将它们包装在
class
我相信当你创建引用列表或字典时,文本的引用不会改变。在
创建标志列表时,
flags[0]
指向flag1
指向的内容,即False
。在将值重新分配给
flag1
时,您将更改为flag1
所指向的内容,但是flags[0]
仍然指向False
。在解决这个问题的一种方法是再添加一层对象包装器。如果布尔值包含在对象中,因为列表中的引用指向标签所指向的对象,即对象,字段中的更改将被反映出来。在
事实上,为什么不直接使用
flags
作为全局变量呢?如果脚本足够聪明,可以在特定位置硬编码一个特定标志中的更改,也许我们可以替换与
^{pr2}$甚至在传递信息的时候
flags
可以是list、dict或normal对象。好的旧消息传递方式到处都是!在相关问题 更多 >
编程相关推荐