type(None)()

MRAB python at mrabarnett.plus.com
Thu Aug 16 11:13:20 EDT 2012


On 16/08/2012 15:56, Robert Kern wrote:
> On 8/16/12 2:56 PM, Ian Kelly wrote:
>> On Thu, Aug 16, 2012 at 6:47 AM, Hans Mulder <hansmu at xs4all.nl> wrote:
>>> On 8/08/12 04:14:01, Steven D'Aprano wrote:
>>>> NoneType raises an error if you try to create a second instance. bool
>>>> just returns one of the two singletons (doubletons?) again.
>>>>
>>>> py> type(None)()
>>>> Traceback (most recent call last):
>>>>    File "<stdin>", line 1, in <module>
>>>> TypeError: cannot create 'NoneType' instances
>>>
>>> Why is that?
>>>
>>> Why doesn't it just return an existing instance of the type,
>>> like bool, int, str and other built-in non-mutable types do?
>>
>> Because unlike those other types there is no use case for that.  It's
>> simpler to raise an error.
>
> What are the use cases for the empty-argument versions of bool(), int(),
> float(), and str()?
>
They can be used with defaultdict. For example:

counts = defaultdict(int)
for i in items:
     counts[i] += 1

Of course, an alternative would be:

counts = defaultdict(lambda: 0)




More information about the Python-list mailing list