g = None
try:
g = open("mydata.txt", "r")
except IOError:
print(’Python could not open the file mydata.txt.’)
if g:
try:
lines = g.readlines()
print("The list of lines is:")
print(lines)
except IOError:
print(’Error while trying to read the data in the file.’)
这是在我的教科书中使用python中的try
和except
的示例。该教科书指出" g
被赋予None
的初始绑定(在False
语句的布尔上下文中被视为if
)&#34 ;。根据我的理解,g
已经拥有从open
函数返回的文件对象,如何在False
语句的布尔上下文中将其视为if
?
答案 0 :(得分:1)
g
在将None
重新分配到{/ p>时将g = open("mydata.txt", "r")
更改为文件对象
Get-WinEvent
它没有"有2个对象"立刻。
答案 1 :(得分:0)
所以重要的是要理解Python是解释语言,按语句执行语句
编译此代码时,编译器知道来自g
的{{1}}为None
。但编译器会继续阅读更多行。当它显示g = None
时,变量g = open("mydata.txt", "r")
现在重新分配以保存文件对象,而不再是g
答案 2 :(得分:0)
它不能同时是None
和文件的内容;我的想法是,如果open()
失败,并且第一个Except
块被点击,那么g will still be equal to
无。“
因此,如果open()
进程成功完成,则if g
语句将评估为true,并且函数将继续。如果open()
流程失败,g
仍将等于None
,因此if g
语句将评估为false,并且会跳过readlines()
部分