小编典典

“ with”语句中变量的范围?

python

我只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


阅读 146

收藏
2020-12-20

共1个答案

小编典典

一个with语句也 不能创建一个范围 (比如ifforwhile不要么创建一个范围)。

结果,Python将分析代码并看到您在with语句中进行了赋值,从而使变量成为局部变量(在实际范围内)。

在Python中,变量不需要在 所有代码路径都进行 初始化
:作为程序员,您有责任确保在使用变量之前已为其分配了变量。这可能会导致代码更短:例如,如果您确定一个列表至少包含一个元素,则可以循环分配。在Java中,不认为在循环中进行分配是安全的(因为可能从未执行循环的主体)。
__for``for

从声明之后我们可以安全地假定变量存在的意义上来说,在范围 之前 进行初始化with可以更安全with。另一方面,如果变量 应该
with语句中分配,而不是在with语句实际导致其他检查之前不对其进行初始化:如果以某种方式在语句中跳过了分配,Python将出错with

with语句仅用于上下文管理。它会(通过语法)强制您在中打开的上下文with在缩进结束时关闭。

2020-12-20