>我需要帮助来解释以下行为,为什么x是全局变量?
def y():
print(x)
if __name__ == "__main__":
x=5
a = y()
输出:5
if __name__ == "__main__":
不定义新的/本地范围。它旨在防止在模块由另一个模块导入时执行以下块。
因此,在此块中定义x
会使其全局化,并且它之所以有效,是因为您在定义函数后调用该函数。
请注意,导入此模块并从那里调用y
将引发错误,因为不会执行x
的定义