“ with”语句中变量的范围?
我只firstline
使用python从python中读取:
with open(file_path, 'r') as f:
my_count = f.readline()
print(my_count)
我对变量my_count的范围感到困惑。虽然打印效果很好,但是最好先my_count = 0
用语句在外部做一些事情(例如,在C中用于做int
my_count = 0
)
-
一个
with
语句也 不能创建一个范围 (比如if
,for
和while
不要么创建一个范围)。结果,Python将分析代码并看到您在
with
语句中进行了赋值,从而使变量成为局部变量(在实际范围内)。在Python中,变量不需要在 所有代码路径 中 都进行 初始化
:作为程序员,您有责任确保在使用变量之前已为其分配了变量。这可能会导致代码更短:例如,如果您确定一个列表至少包含一个元素,则可以循环分配。在Java中,不认为在循环中进行分配是安全的(因为可能从未执行循环的主体)。
__for``for
从声明之后我们可以安全地假定变量存在的意义上来说,在范围 之前 进行初始化
with
可以更安全with
。另一方面,如果变量 应该
在with
语句中分配,而不是在with
语句实际导致其他检查之前不对其进行初始化:如果以某种方式在语句中跳过了分配,Python将出错with
。with语句仅用于上下文管理。它会(通过语法)强制您在中打开的上下文
with
在缩进结束时关闭。