执行一段自定函数,但没有得到预期的回传
def send_messages(lis):
for lis2 in lis:
lis2 = lis.pop()
print(lis2)
messages.append(lis2)
print(lis)
print(messages)
上面这部分是函数,然后我按照如下执行了程序
lis = ['Hello!', 'How are you?', 'Thank you!']
messages = []
send_messages(lis)
得到的是
Thank you!
How are you?
['Hello!']
['Thank you!', 'How are you?']
为什么列表lis没有被移空?
而当我将函数更改为如下时:
def send_messages(lis):
while lis:
lis2 = lis.pop()
print(lis2)
messages.append(lis2)
print(lis)
print(messages)
执行了同样的命令,得到的却是:
Thank you!
How are you?
Hello!
[]
['Thank you!', 'How are you?', 'Hello!']
关于 LearnKu
这么说吧,
for lis2 in lis:,lis是['Hello!', 'How are you?', 'Thank you!'],lis2 = lis[0]lis是['Hello!', 'How are you?'],lis2 = lis[1]lis是['Hello!'],lis2 = lis[2], 不存在, 回圈结束 所以回圈只执行两次, 每一回圈, lis2 = lis.pop() 取最后一个, 所以打印了回圈结束后
print(lis),print(messages), 这时lis是['Hello!'], 而messages为两次后lis后面取出的内容, 也就是['Thank you!', 'How are you?'].