从下面的代码中访问在ktext块中定义的变量with-as是否合法?

代码如下。

try:
    with open("pub", "r") as f:
        ktext = f.read().strip()
except:
    ktext = ""

print(ktext)

最佳答案

是的,在Python中,变量作用域扩展到了块的外部(函数和类块除外)。这意味着您可以执行以下操作:

if True:
    a = 1

a += 1
print(a)    # 2


相同的原理适用于with块:

with open('data.txt') as file:
    data = file.read()

print(data)


请注意,如果引发异常,则不会分配变量(但在您的情况下,您已经使用except块中的ktext = ""进行了处理)。

关于python - 在open as块中定义的变量是否可用于外部块中的代码?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55724595/

10-13 07:43