Why is the interpreter is returning a 'reference'?
On 2/17/14 12:00 PM, Nir wrote:
>>>> k = ['hi','boss']
> ['hi', 'boss']
>>>> k= [s.upper for s in k]
> [<built-in method upper of str object at 0x00000000021B2AF8>, <built-in method upper of str object at 0x0000000002283F58>]
> Why doesn't the python interpreter just return
> ['HI, 'BOSS'] ?
> This isn't a big deal, but I am just curious as to why it does this.
You have to invoke s.upper, with parens:
k = [s.upper() for s in k]
In Python, a function or method is a first-class object, so "s.upper" is
a reference to the method, "s.upper()" is the result of calling the method.
Ned Batchelder, http://nedbatchelder.com