2024-05-06 19:04:15 发布
网友
a=[] b=[] c= a[0],b if a else (None,None) d= (a[0],b) if a else (None,None)
第一个表达式将引发IndexError,但第二个表达式很好。它是如何发生的
带有IndexError的代码行正在计算a[0]的值,而后面的代码行则没有
IndexError
a[0]
对于线路:
c= a[0],b if a else (None,None)
发生的情况如下:
变量c被赋值为a[0]的值和if语句b if a else (None,None)产生的值。 为此,该行必须计算a[0]中的值
c
if
b if a else (None,None)
d= (a[0],b) if a else (None,None)
尚未计算a[0]的值。因为if语句没有到达将尝试并计算a[0]中的值的元组
如果要将行更改为:
d= (a[0],b) if True else (None,None)
您还将得到一个IndexError
带有
IndexError
的代码行正在计算a[0]
的值,而后面的代码行则没有对于线路:
发生的情况如下:
变量
c
被赋值为a[0]
的值和if
语句b if a else (None,None)
产生的值。为此,该行必须计算
a[0]
中的值对于线路:
尚未计算
a[0]
的值。因为if
语句没有到达将尝试并计算a[0]
中的值的元组如果要将行更改为:
您还将得到一个
IndexError
相关问题 更多 >
编程相关推荐