在statemens外部使用python变量

2024-05-29 10:56:33 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python脚本中,我遇到了一个在with语句内定义的变量,但该变量是在语句外部使用的,如下面示例中的file

with open(fname, 'r') as file:
    pass
print(file.mode)

直观地说,file不应该存在于with语句之外,而且这只是偶然的。但是,我在Python文档中找不到关于这是否应该起作用的结论性声明。这种类型的语句是否可以安全使用(对于将来的python版本也是如此),还是应该避免使用?Python文档中指向此信息的指针也非常有用。在


Tags: 文档脚本示例定义modeaswithpass
1条回答
网友
1楼 · 发布于 2024-05-29 10:56:33

变量范围仅适用于functionmoduleclass级别。如果您在同一个函数/模块/类中,则定义的所有变量都将在该函数/模块/类中可用,而不管它是否在withforif等块中定义。在

例如,这:

for x in range(1):
    y = 1
print(y)

与使用with语句的示例一样有效(尽管没有意义)。在

但是,您必须小心,因为如果从未输入代码块,则代码块中定义的变量可能实际上没有定义,例如在这种情况下:

^{pr2}$

Good description of LEGB rule of thumb for variable scope

相关问题 更多 >

    热门问题