我只从 python 读取 firSTLine
使用:
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 中,所有代码路径中的变量都不需要初始化:作为程序员,您有责任确保在使用变量之前对其进行赋值。这会导致代码更短:例如,您确定一个列表至少包含一个元素,然后您可以在 for
循环中赋值。在 Java 中,for
循环中的赋值被认为是不安全的(因为循环体可能永远不会执行)。
在 with
作用域之前初始化可以更安全,因为在 with
语句之后我们可以安全地假设变量存在。另一方面,如果变量应该在with
语句中赋值,那么在with
语句之前不初始化它实际上会导致额外的检查:如果在 with
语句中以某种方式跳过赋值,Python 将出错。
with 语句仅用于上下文管理目的。它强制(通过语法)您在 with
中打开的上下文在缩进结束时关闭。
关于python - "with"语句中的变量范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45100271/