[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