10.08.2012, в 13:19, Mok-Kong Shen написал(а):

> 
> In an earlier question about lists, I was told about the issue of
> creation of local names in a function. However, I still can't
> understand why the program below outputs:
> 
> [999] sss
> [999]
> 
> and not two identical lines of output. For both operators "+=" should
> anyway work in similar manner in the function xx in my view.
> 
> Thanks for your help in advance.
> 
> M. K. Shen
> 
> ----------------------------------------------------------
> 
> def xx(list,str):
>  list+=[999]
>  str+="sss"
> 
> lista=[]
> stra=""
> lista+=[999]
> stra+="sss"
> print(lista,stra)
> 
> listb=[]
> strb=""
> xx(listb,strb)
> print(listb,strb)
> -- 
> http://mail.python.org/mailman/listinfo/python-list

It seems like your xx() function doesn't return local str parameter and prints 
the global empty str, whereas it mutates the global list.

Roman
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to