Python3如何打印(列表,列表.pop())?

2024-04-25 22:55:12 发布

您现在位置:Python中文网/ 问答频道 /正文

对于包含多个参数的print(),我认为它会逐个计算它们。但是,下面的代码

a = [1, 2, 3, 4]
print(a, a[:], a.pop(), a, a[:])

印刷品

^{pr2}$

我以为python会先计算a,然后是a[:],然后是{},然后是{}和{},这将打印出来

[1, 2, 3, 4] [1, 2, 3, 4] 4 [1, 2, 3] [1, 2, 3]

那么这到底是怎么工作的呢?在


Tags: 代码参数popprint印刷品pr2
1条回答
网友
1楼 · 发布于 2024-04-25 22:55:12

以防调用函数(任何函数)。参数首先从左到右求值。因此,您的代码相当于:

arg1 = a
arg2 = a[:]
arg3 = a.pop()
arg4 = a[:]
print(arg1,arg2,arg3,arg4)

(当然,arg1arg2等变量在Python级别不存在)

因此,arg1将引用与a相同的列表,接下来我们生成{}的一个浅拷贝,并将其存储在arg2中,然后我们从a弹出,最后一个项目存储在arg3中,最后我们制作另一个浅拷贝(此时a)并将其存储在arg4中。在

这意味着:

^{pr2}$

接下来,使用这些参数调用print(..)语句,然后像我们在注释中看到的那样打印出来。所以它会打印:

[1, 2, 3] [1, 2, 3, 4] 4 [1, 2, 3]

因此,重要的部分是a.pop()不仅返回a和{}引用的列表的最后一个元素,而且还修改该列表(删除最后一个元素)。因此,arg1和{}仍然引用同一个列表,但是它被修改了。在

相关问题 更多 >