Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何将变量分配给两个对象?_Python 3.x - Fatal编程技术网

Python 3.x 如何将变量分配给两个对象?

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

这是一个在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 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")