[我正在使用with
块从文件中提取信息,并且令我感到惊讶的是with
块中声明的任何变量都是全局变量。它们不应该是with
块的本地对象,并且在更改全局变量之前也不需要使用global myVar
吗?毕竟with
定义了一个代码块,对吧?
Python没有块范围。 with
语句未引入新的作用域;语句的主体仍与with
语句处于同一作用域。
Python有四种作用域:
import
的情况下在任何模块中可用的名称。每个名称都首先在本地范围(如果不在函数定义内,则可能是全局范围)内查找,然后在任何非本地范围内(如果在全局范围内定义了一个函数,则可能不存在)本地范围),然后是全局范围,最后是内置范围。