嗯…
按我的理解不应该在函数声明中写unprinted_message[:],把[:]去掉就好
应该是在函数调用的时候send_message(unprinted_message[:],completed_message)
函数声明时定义一个变量名,它只管接受参数<显然unprinted_message[:]不能做一个变量名^v^>
unprinted_message[:]是一个包含了原函数全部元素的切片,即调用函数时你要传入一个原列表的副本 <送个副本进去当然就不会改变原值啦^v^>
***
(据我所知没法在函数声明的时候决定是否修改传入的参数,这只由传入的参数本身是否可变决定)(比方你传入一个列表/字典,传过去的应该是他们的地址,不可避免会对原值做修改)(所以对这些可变对象我们就只能送进去一个副本啦)(像数字字符串元组这种的就只是传个值进去,这个值对应的是一个新的地址,你想改变原值也做不到)
<另外最好不要在函数内外界同一个变量名,虽然有作用域在不影响运行,但万一出问题了也不好调试>