[Python-de] Neue Instance mit gleichem Typ über eine Variable?

Diez B. Roggisch deets at web.de
So Mai 26 18:29:44 CEST 2013


> 
> Meiner Meinung nach ist sowieso
> 
> if var is None:
>    var = {}
> 
> /noch/ besser ;)

Stimmt - mache ich selbst eigentlich auch meistens so, mir ging's aber auch um den generellen Fall, wo ja gerne mit "<cond> and <trueval> or <falseval>" rumgehampelt wird.

> Zum Beispiel "vergisst" deine Variante von foo() den Typ des Arguments, wenn 
> es sich um ein leeres Dictionary handelt:
> 
>>>> def foo(var=None):
> ...     var = var or {}
> ...     var["result"] = type(var)()
> ...     return var
> ... 
>>>> assert type(foo({1: 2})["result"]) is dict
>>>> assert type(foo({})["result"]) is dict
>>>> assert type(foo(OrderedDict([(1,2)]))["result"]) is OrderedDict
>>>> assert type(foo(OrderedDict([]))["result"]) is OrderedDict
> Traceback (most recent call last):
>  File "<stdin>", line 1, in <module>
> AssertionError

Und natürlich noch besser als mein Beispiel ;)

Diez


Mehr Informationen über die Mailingliste python-de