[python-users] Fiese Falle

Oliver Frietsch python at friets.ch
Mo Jun 13 10:58:36 CEST 2016


Hi,

ich finde diese Diskussion etwas "akademisch". Meiner Vermutung nach 
handelt es sich deswegen um Strings, weil die Daten entweder von der 
Kommandozeile oder vielleicht aus einer Textdatei gelesen werden. Wenn 
man so etwas tut, aber de facto mit Integers jongliert, würde ich eben 
_direkt nach dem Einlesen_ eine Typkonvertierung durchführen. Erspart 
einem später all den Ärger.

Oliver

Am 13.06.2016 um 09:17 schrieb Daniel Hepper:
> Hallo zusammen,
>
> Python ist nun mal eine dynamisch, strikt typisierte Sprache. Darum wird
> "-1" nicht als Zahl behandelt, ausser man konvertiert es explizit in eine.
>
> Unter Java (statisch, strikt typisiert) könnte man dank Generics in
> genau die gleiche "fiese Falle" laufen.
>
> public static <T extends Comparable<T>> T min( T m, T n )
> {
>   return m.compareTo( n ) < 0 ? m : n;
> }
>
> System.out.println( min( "-1", "-2" ) );              // -1
>
> System.out.println( min( -1, -2 ) );                      // -2
>
> Wirklich interessant wird es m.E. erst wenn man Typen mischt.
>
> $ python
> Python 2.7.10 (default, Jul 14 2015, 19:46:27)
> [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
> Type "help", "copyright", "credits" or "license" for more information.
>>>> min(-1, '-2')
> -1
>
> $ python3.4
> Python 3.4.3 (default, Aug 26 2015, 18:29:14)
> [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.56)] on darwin
> Type "help", "copyright", "credits" or "license" for more information.
>>>> min(-1, "-2")
>>>> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> TypeError: unorderable types: str() < int()
>
> Wer noch mehr solcher Kuriositäten sehen will dem sei der sehr
> unterhaltsame Lightning-Talk "Wat" zu
> empfehlen: https://www.destroyallsoftware.com/talks/wat
>
> Viele Grüße,
> Daniel
>
> 2016-06-13 8:13 GMT+02:00 Dirk Hünniger <python-users at uni-koeln.de
> <mailto:python-users at uni-koeln.de>>:
>
>     ________________________________________
>
>     Diese Mail erhalten Sie ueber die Mailingliste python-users der
>     Universitaet zu Koeln
>     Nachrichten an: python-users at uni-koeln.de
>     <mailto:python-users at uni-koeln.de>
>     Abonnement und Benutzereinstellungen:
>     https://lists.uni-koeln.de/mailman/listinfo/python-users
>     Listenarchiv: http://pycologne.de/mlsearch.html
>
>     pyCologne Homepage: http://pycologne.de/
>
>
>     ---------- Forwarded message ----------
>     From: "Dirk Hünniger" <dirk.hunniger at googlemail.com
>     <mailto:dirk.hunniger at googlemail.com>>
>     To: python-users at uni-koeln.de <mailto:python-users at uni-koeln.de>
>     Cc:
>     Date: Mon, 13 Jun 2016 08:13:13 +0200
>     Subject: Re: [python-users] Fiese Falle
>     Naja,
>     ich bin ebenfalls der Ansicht, dass hier etwas mit den Typen nicht
>     so ist wie man es vielleicht ohne nachzudenken erwarten würde. Man
>     könnte explizit formulieren, dass es sich bei -1 und -2 jeweils um
>     Integer handelt. Dies würde begünstigt, wenn man Typen immer
>     vollständig ausschriebe, wie man es in z.B. in Java tut. In Python
>     hat man allerdings durch den Aufruf der Funktion int ähnliche
>     Möglichkeiten, wenn man auch selbst die volle Verantwortung trägt
>     dies auch zu tun. Die Alternative die Ordnungsrelation auf Strings
>     abzuschaffen, scheint mir weniger aussichtsreich, da man ja
>     gelegentlich Dinge alphabetisch sortieren möchte und ferner Strings
>     in AVL o.ä. Bäumen verwalten möchte.
>     Viele Grüße Dirk
>
>     On 12.06.2016 23:14, Michael Kesper wrote:
>
>         Hallo Dirk, hallo zusammen,
>
>         in der Tat:
>
>         Python 2.7.9 / Python 3.4.2:
>         >>> print(min("-1","-2"))
>         -1
>         >>> print(max("-1","-2"))
>         -2
>
>         Erwartet hätte ich eigentlich eine TypeError Exception.
>
>         Viele Grüße
>         Michael
>         ________________________________________
>
>         Diese Mail erhalten Sie ueber die Mailingliste python-users der
>         Universitaet zu Koeln
>         Nachrichten an: python-users at uni-koeln.de
>         <mailto:python-users at uni-koeln.de>
>         Abonnement und Benutzereinstellungen:
>         https://lists.uni-koeln.de/mailman/listinfo/python-users
>         Listenarchiv: http://pycologne.de/mlsearch.html
>
>         pyCologne Homepage: http://pycologne.de/
>
>
>
>
>
>
> ________________________________________
>
> Diese Mail erhalten Sie ueber die Mailingliste python-users der Universitaet zu Koeln
> Nachrichten an: python-users at uni-koeln.de
> Abonnement und Benutzereinstellungen: https://lists.uni-koeln.de/mailman/listinfo/python-users
> Listenarchiv: http://pycologne.de/mlsearch.html
>
> pyCologne Homepage: http://pycologne.de/
>



Mehr Informationen über die Mailingliste python-users