Why is the interpreter is returning a 'reference'?

Ned Batchelder ned at nedbatchelder.com
Mon Feb 17 12:08:34 EST 2014


On 2/17/14 12:00 PM, Nir wrote:
>>>> k = ['hi','boss']
>>>>
>>>> k
> ['hi', 'boss']
>>>> k= [s.upper for s in k]
>>>> 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




More information about the Python-list mailing list