Python 3.x 如何将变量分配给两个对象?
这是一个在python中使用Python 3.x 如何将变量分配给两个对象?,python-3.x,Python 3.x,这是一个在python中使用try和except的例子。教科书指出“g的初始绑定为None(在if语句的布尔上下文中被视为False”)。根据我的理解,g已经保存了从open函数返回的文件对象,在if语句的布尔上下文中,如何将其视为False?g在以下位置重新分配时从保存None更改为文件对象: g = None try: g = open("mydata.txt", "r") except IOError: print(’Python could not open the file
try
和except
的例子。教科书指出“g
的初始绑定为None
(在if
语句的布尔上下文中被视为False
”)。根据我的理解,g
已经保存了从open
函数返回的文件对象,在if
语句的布尔上下文中,如何将其视为False
?g
在以下位置重新分配时从保存None
更改为文件对象:
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是一种解释语言非常重要,它是一条语句一条语句执行的
编译此代码时,编译器从
g=None
知道g
是None
。但是编译器不断读取更多的行。当它读取g=open(“mydata.txt”,“r”)
时,变量g
现在重新分配以保存一个文件对象,并且不再none它不能同时是none
和文件内容;其思想是,如果open()
失败,并且命中了除
块之外的第一个,则g仍将等于
None`
因此,如果open()
过程成功完成,那么if g
语句将计算为true,函数将继续。如果open()?教科书上说,g
在if语句的布尔上下文中被视为False。@alexlau它永远不会被重新赋值回来。try
/catch
的目的是捕获open
无法打开文件时可能引发的异常。如果open
抛出异常,则不会发生重新分配,因此g
在try
退出时仍将保持None
<代码>如果g:
基本上是检查打开是否成功。
g = open("mydata.txt", "r")