Consider:

args = ['-sdfkj']
print args
for arg in args:
    print arg.replace("-", '')
    arg = arg.replace("-", '')
print args

这将产生:
['-sdfkj']
sdfkj
['-sdfkj']


循环中的['sdfkj']是副本吗?
它的行为就好像它是一个副本(或者可能是一个不可变的thingie,但是我希望会抛出一个错误…)
。。

最佳答案

循环中的arg是副本吗?
是的,它包含一份参考资料。
。只修改局部变量arg指向的内容。

Before assignment         After assignment

args          arg          args          arg
  |            |            |            |
  |            |            |            |
(array)        /          (array)       'sdfkj'
  |[0]        /             |[0]
   \         /              |
    \       /               |
     '-sdfkj'            '-sdfkj'

10-07 15:48