Python 在for循环外部更改变量

Python 在for循环外部更改变量,python,pycharm,Python,Pycharm,我正在编写一个程序,其中我正在使用for循环访问列表中的一个对象。我希望能够从for循环外部更改for循环内部的变量。下面的代码片段: member_found = False # default value for member in self._members: if member_id == member.get_account_ID(): member_found = True 在PyCharm中,我收到一个通知说“未使用局部变量'member_foun

我正在编写一个程序,其中我正在使用for循环访问列表中的一个对象。我希望能够从for循环外部更改for循环内部的变量。下面的代码片段:

member_found = False    # default value

for member in self._members:
    if member_id == member.get_account_ID():
        member_found = True

在PyCharm中,我收到一个通知说“未使用局部变量'member_found'值。”当我运行此代码时,它似乎不会产生任何错误,但我希望确保for循环外的变量实际正在被更改


我总是可以将默认值设置为空列表并附加列表,但如果可能的话,我更愿意使用布尔值。

PyCharm只是警告您,正如您自己所说,您不会得到错误,也不会以您的方式更改值。尝试在for循环后打印该值,以确保其实际已更改。

正如Phix所述,该通知只是警告您不要在for循环后使用变量。Python的作用域规则使您共享的代码能够完全执行您试图执行的操作。

该变量将被更新。我们可以简单地说明这一点:

x = 0
 for i in range(5):
   x = i

print(x)
4

其他人已经解释了你收到的警告,所以我没有什么要补充的

您是否在分配后实际使用了
member\u found
?是的,我在分配后的代码是:如果未找到member\u found:raise InvalidCheckoutError“但我想确保for循环外的变量实际上正在被更改。”
在循环后打印它您知道,您可以通过运行代码自己简单地回答这个问题,但是是的,如果您的
if
条件为真,那么
member\u found
将设置为
true
。注意,Python没有块作用域。当一个简单的
打印将回答您的问题时,您为什么要问我们?我们希望你在这里张贴之前做这项工作。