Built-in functions and keyword arguments

Bruno Desthuilliers bruno.42.desthuilliers at wtf.websiteburo.oops.com
Mon Oct 29 10:20:43 EDT 2007


Armando Serrano Lombillo a écrit :
> Why does Python give an error when I try to do this:
> 
>>>> len(object=[1,2])
> Traceback (most recent call last):
>   File "<pyshell#40>", line 1, in <module>
>     len(object=[1,2])
> TypeError: len() takes no keyword arguments
> 
> but not when I use a "normal" function:
> 
>>>> def my_len(object):
> 	return len(object)
> 
>>>> my_len(object=[1,2])
> 2

In the second case, the name of the argument *is* 'object'. Which is not 
the case for the builtin len (which, fwiw, has type 
'builtin_function_or_method', not 'function', so inspect.getargspec 
couldn't tell me more).

<ot>
While we're at it, you should avoid using builtin's names for 
identifiers - here, using 'object' as the arg name shadows the builtin 
'object' class).
</ot>




More information about the Python-list mailing list