Python判断全局变量时提示builtin_function_or_method不可迭代错误
错误原因
globals是Python的内置函数,不是存储全局变量映射关系的字典对象。你写判断条件时没有加括号调用该函数,此时globals指向的是未执行的函数本身,属于builtin_function_or_method类型,不支持成员关系迭代判断,因此执行'STATUS' not in globals时会触发对应的类型报错。
修复方法
给globals加上括号完成调用,globals()执行后会返回包含当前作用域所有全局变量键值对的字典,再对这个返回的字典做成员判断即可符合预期。
修正后的判断语句写法:
if 'STATUS' not in globals():
替换原有判断行后,对应代码片段如下:
def add_users(): global users users = [] while True: if 'STATUS' not in globals(): server.listen() client, client_addr = server.accept() print(colored(f'[+] {client_addr} Client connected to the server', 'yellow')) users.append([client, client_addr])
内容的提问来源于stack exchange,提问作者Mouad Essalim
相关产品推荐
相关产品推荐

