Python中文
首页
教程
问答
标签
搜索
登录
注册
如何优雅地处理全局变量?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<pre><code>def doSomething(index): if index == 0: while flag1: do stuff elif index == 1: while flag2: do stuff ... </code></pre> <p>在多线程环境中,<code>flag1</code>和{<cd2>}是布尔函数(全局变量),它们会在其他地方修改。如果我能这样做的话,那就太优雅了:</p> ^{pr2}$ <p>有没有办法做到这一点?在</p> <p><strong>编辑:</strong></p> <p><strong>1.</strong>看到一些人建议list,问题是,像这样的列表<code>flags = [flag1, flag2, flag3, ...]</code>假设<code>flag1 = True</code>,<code>flag2 = False</code>,<code>flag3 = True</code>,这使得{<cd7>},如果你在另一个线程的其他地方修改<code>flag1 = False</code>,<code>flags</code>不会相应地改变,所以这肯定行不通。在</p> <p>{1美元^</p> <p><strong>2.</strong>事实上,我发现了一个原始答案,建议<code>while [flag1, flag2, flag3, ...][index]</code>,而且它确实有效!只是不知道他为什么删除了他的答案?在</p> <p><strong>有趣的部分:</strong></p> <p>刚刚测试了以下部分:</p> ^{3}$ <p>它不会起作用,但有趣的是,这实际上起作用了:</p> <pre><code>def doSomething(index): while [flag1, flag2, flag3][index]: do stuff </code></pre> <p>所以我假设<code>[flag1, flag2, flag3][index]</code>实际上返回原始变量?有人能再解释一点吗?在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>使用<code>ternary</code>运算符。在</p> <pre><code>def doSomething(index): while (flag1 if index else flag2): do stuff </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
将Pandas数据帧转换为PyTorch张量?
2 回答
将Pandas数据帧转换为scipy稀疏矩阵
8 回答
将Pandas数据帧转换为Spark Datafram时出现问题
9 回答
将pandas数据帧转换为spark DataFram时出错
3 回答
将Pandas数据帧转换为spark datafram时收到错误
1 回答
将Pandas数据帧转换为Spark数据帧
3 回答
将Pandas数据帧转换为Tensorflow数据
1 回答
将Pandas数据帧转换为tkinter obj
7 回答
将pandas数据帧转换为XML
1 回答
将Pandas数据帧转换为值sql语句
3 回答
将pandas数据帧转换为元组
1 回答
将pandas数据帧转换为元组列表
4 回答
将pandas数据帧转换为元组列表并删除所有pandas数据类型
8 回答
将pandas数据帧转换为具有头和数据类型的numpy数组
1 回答
将pandas数据帧转换为内存中的拼花地板,并将其加载到Python中的Hadoop中
8 回答
将pandas数据帧转换为内存中类似文件的对象?
6 回答
将Pandas数据帧转换为内存功能(&F)
8 回答
将pandas数据帧转换为列表列表
5 回答
将pandas数据帧转换为列表列表以输入到RNN
5 回答
将Pandas数据帧转换为单行DataFram
8 回答