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问题
如何提高Djang的410误差
6 回答
如何提高doc2vec模型中两个文档(句子)的余弦相似度?
5 回答
如何提高Docker的日志限制?|[输出已剪裁,达到日志限制100KiB/s]
10 回答
如何提高DQN的性能?
9 回答
如何提高EasyOCR的准确性/预测?
9 回答
如何提高Euler#39项目解决方案的效率?
9 回答
如何提高F1成绩进行分类
6 回答
如何提高FaceNet的准确性
9 回答
如何提高fft处理的精度?
5 回答
如何提高Fibonacci实现对大n的精度?
9 回答
如何提高Flask与psycopg2的连接时间
6 回答
如何提高FosterCauer变换的scipy.signal.invres()的数值稳定性?
1 回答
如何提高gae查询的性能?
5 回答
如何提高GANs用于时间序列预测/异常检测的结果
5 回答
如何提高gevent和tornado组合的性能?
10 回答
如何提高googleappengin请求日志的吞吐量
1 回答
如何提高googlevision文本识别的准确性
1 回答
如何提高groupby/apply效率
10 回答
如何提高Gunicorn中的请求率
3 回答
如何提高G中的文件编码转换
4 回答