Python向函数传递列表问题

程序去掉【:】后可以运行。
但是当试图将列表的副本传递给函数时,程序报错。

img

因为你是定义函数,而不是调用函数
所以,在定义的时候,不能写 msgs[:] 直接写成 msgs即可,调用时写 msgs[:]

python 没这种语法。python 中的对象传递,默认都是传引用的。如果你需要一个 List 对象的副本,那建议重新复制一次这个对象:

li = [1, 2, 3, 4]
send_messages(list(li))

其中 list(l) 就是对原来的列表 li 变量进行一次 shallow copy。

def send_massages(msgs):
sent_massages = []
for i in range(len(msgs)):
delete_sent_massages = msgs.pop()
print(delete_sent_massages)
sent_massages.insert(0, delete_sent_massages)
print(sent_massages)

def show_massages(msgs):
for msg in msgs:
print(msg)