a=[]
b=[]
c= a[0],b if a else (None,None)
d= (a[0],b) if a else (None,None)
第一个表达式会引发IndexError,但第二个表达式很好。它是怎么回事。
答案 0 :(得分:2)
IndexError
的代码行正在评估a[0]
的值,而不是c= a[0],b if a else (None,None)
之后的行。
对于这一行:
c
发生的事情如下:
变量a[0]
被赋予if
的值以及b if a else (None,None)
语句a[0]
产生的值。
为此,该行必须评估d= (a[0],b) if a else (None,None)
中的值。
对于这一行:
a[0]
尚未评估if
的值。因为a[0]
语句未达到将尝试评估d= (a[0],b) if True else (None,None)
中的值的元组。
如果您要将行更改为:
IndexError
您还可以获得ScriptingContainer container = new ScriptingContainer();
container.runScriptlet("puts 'hello world'");