Python中if-elif语句内全局变量的取值一致性问题问询
Python中if-elif对全局变量的判断逻辑
问题描述
本人并非程序员,若问题表述浅显还请见谅。想了解Python中if-elif语句对全局变量的处理逻辑:全局布尔变量x可能被其他高频操作修改,需确保其在if与elif的条件判断中取值一致。请问底层代码会在两处判断中使用同一x值,还是每次都重新读取全局变量导致取值不同?
示例代码:
global x if x and not status: # Do some stuff elif not x and status: # do some other stuff
回答
Python在执行if和elif的条件判断时,每次都会重新读取全局变量x的当前值,不会复用if判断时的x值。也就是说,如果在if判断结束、elif判断开始前,其他操作修改了全局x的值,那么两次判断用到的x就会不一样。
如果要确保两次判断用的是同一个x值,最简单的办法是先把全局x的值存到一个局部变量里,之后的判断都用这个局部变量:
global x current_x = x # 先锁定x的当前值到局部变量 if current_x and not status: # Do some stuff elif not current_x and status: # do some other stuff
这样不管后续全局x被怎么修改,current_x都保持着读取那一刻的值,两次判断的取值就完全一致了。
内容的提问来源于stack exchange,提问作者Mark E
相关产品推荐
相关产品推荐

