In article 
<[EMAIL PROTECTED]>,
 ssecorp <[EMAIL PROTECTED]> wrote:

> >>> def mod(x,y):
>       return x.append(y)
> 
> >>> mod([1,2],3)
> >>> k=[1,2,3]
> >>> k
> [1, 2, 3]
> >>> l = mod(k,4)
> >>> l
> >>> k
> [1, 2, 3, 4]
> >>> l
> >>> k==l
> False
> >>> mod(k,5)
> >>> k
> [1, 2, 3, 4, 5]
> >>> mod(l,4)
> 
> Traceback (most recent call last):
>   File "<pyshell#29>", line 1, in <module>
>     mod(l,4)
>   File "<pyshell#18>", line 2, in mod
>     return x.append(y)
> AttributeError: 'NoneType' object has no attribute 'append'
> >>> l
> >>> l=k
> >>> l
> [1, 2, 3, 4, 5]
> >>> i=mod(k,1)
> >>> i
> >>>
> 
> same stuff but i dont find this intuitive.

You need to read the docs. AList.append(x) does _not_
return AList with x appended. In fact it returns None,
because it wants to be a "procedure" that doesn't return
anything at all, but there is no such thing in Python;
functions and methods that do not explicitly contain
a "return" statement return None.

So when you say "return x.append(a)" you're saying
"return None", which explains the rest of it. You
noticed that the second line of

> >>> l = mod(k,4)
> >>> l

didn't print anything? That's because the first line
set l to None. If you'd typed "print l" instead of just "l"
you would have seen

>>> l = mod(k,4)
>>> l
>>> None

-- 
David C. Ullrich
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to