提问人:Mark E 提问时间:4/1/2023 最后编辑:juanpa.arrivillagaMark E 更新时间:4/1/2023 访问量:113
if 中的 Python 全局变量 - elif
Python global variable in if - elif
问:
对不起,如果这是一个愚蠢的问题,我不是程序员。只是想了解如何在 if elif 语句中处理全局变量。全局变量 x(布尔值)可能会在其他地方以高频率更新,因此我需要 x 在 If 和 elif 条件语句中相同。基础代码是否在两个语句中使用相同的 x 值,或者是否每次都读取全局变量,因此这意味着它在两个条件语句中可能不同?
希望这是有道理的?
例如
global x
if x and not status:
# Do some stuff
elif not x and status:
# do some other stuff
这只是一个试图理解如何处理全局变量的问题
答:
0赞
Blckknght
4/1/2023
#1
在编写它时,您的代码将分别在 和 条件中为您加载该值两次不同的时间。该变量的性质并没有真正考虑这一点(函数中的局部变量也是如此)。x
if
elif
global
如果只想读取一次,则可以重写复合条件,改用 和 来测试 ,并带有处理测试的内部语句:x
if
else
x
if
status
if x:
if not status:
# do stuff
else: # this is the big change, no second test of x here!
if status:
# do other stuff
0赞
JL Peyret
4/1/2023
#2
只是把它作为一种可能的方法,对整个决策结构的影响最小,如果是一个简单的变量。 可能适用于更复杂的变量。x
copy.deepcopy
这类似于在注释中提到的 x 不可变时使用。y = x
然而,正如我在评论中所说,依赖快速变化的全局变量来驱动处理和决策的设计似乎在自找麻烦。
import copy
global x
#take a copy and then use for this pass
x2 = copy.copy(x)
if x2 and not status:
# Do some stuff
elif not x2 and status:
# do some other stuff
评论
global
global x
global
x
x
x
if/elif