在python3.x中,print是一个函数。因此,您必须将这两个值作为参数传递,如下所示print (i, L[i])
当你说
^{pr2}$
python3.x接受i作为print的参数,并将(L[i])视为一个单独的表达式并对其求值,但不会传递给print函数。这就是为什么总是打印第一个元素。在
除此之外,整个语句将被计算为以下元组(None, L[i])
要理解这一点,可以在Python REPL中尝试类似的方法>>> print (1), (2)
1
(None, 2)
当执行带有1的内部print时,它将返回None,下一个元素是2。在Python中,当您在圆括号中编写两个用逗号分隔的表达式时,它们将成为一个元组。在
您可以用Python生成的字节码来确认这一点,如下所示from dis import dis
code1 = compile("print (1), (2)", "", "exec")
dis(code1)
输出1 0 LOAD_NAME 0 (print)
3 LOAD_CONST 0 (1)
6 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
9 LOAD_CONST 1 (2)
12 BUILD_TUPLE 2
15 POP_TOP
16 LOAD_CONST 2 (None)
19 RETURN_VALUE
BUILD_TUPLE对应于元组结构,由于我们不使用它,它会立即被丢弃。在