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