<div dir="ltr">Hallo zusammen,<div><br></div><div>Python ist nun mal eine dynamisch, strikt typisierte Sprache. Darum wird "-1" nicht als Zahl behandelt, ausser man konvertiert es explizit in eine.</div><div><br></div><div>Unter Java (statisch, strikt typisiert) könnte man dank Generics in genau die gleiche "fiese Falle" laufen.<br></div><div><br></div>public static <T extends Comparable<T>> T min( T m, T n )<br>{<br>  return m.compareTo( n ) < 0 ? m : n;<br>}<br><br>System.out.println( min( "-1", "-2" ) );              // -1<br><br>System.out.println( min( -1, -2 ) );                      // -2<br><br>Wirklich interessant wird es m.E. erst wenn man Typen mischt.<div><br></div><div><div>$ python</div><div>Python 2.7.10 (default, Jul 14 2015, 19:46:27)</div><div>[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin</div><div>Type "help", "copyright", "credits" or "license" for more information.</div><div>>>> min(-1, '-2')</div><div>-1</div></div><div><br></div><div><div>$ python3.4</div><div>Python 3.4.3 (default, Aug 26 2015, 18:29:14)</div><div>[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.56)] on darwin</div><div>Type "help", "copyright", "credits" or "license" for more information.</div><div>>>> min(-1, "-2")</div><div>>>> Traceback (most recent call last):</div><div>  File "<stdin>", line 1, in <module></div><div>TypeError: unorderable types: str() < int()</div></div><div><br></div><div>Wer noch mehr solcher Kuriositäten sehen will dem sei der sehr unterhaltsame Lightning-Talk "Wat" zu empfehlen: <a href="https://www.destroyallsoftware.com/talks/wat">https://www.destroyallsoftware.com/talks/wat</a><div><br></div><div>Viele Grüße,</div><div>Daniel</div></div></div><div class="gmail_extra"><br><div class="gmail_quote">2016-06-13 8:13 GMT+02:00 Dirk Hünniger <span dir="ltr"><<a href="mailto:python-users@uni-koeln.de" target="_blank">python-users@uni-koeln.de</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">________________________________________<br>
<br>
Diese Mail erhalten Sie ueber die Mailingliste python-users der Universitaet zu Koeln<br>
Nachrichten an: <a href="mailto:python-users@uni-koeln.de">python-users@uni-koeln.de</a><br>
Abonnement und Benutzereinstellungen: <a href="https://lists.uni-koeln.de/mailman/listinfo/python-users" rel="noreferrer" target="_blank">https://lists.uni-koeln.de/mailman/listinfo/python-users</a><br>
Listenarchiv: <a href="http://pycologne.de/mlsearch.html" rel="noreferrer" target="_blank">http://pycologne.de/mlsearch.html</a><br>
<br>
pyCologne Homepage: <a href="http://pycologne.de/" rel="noreferrer" target="_blank">http://pycologne.de/</a><br>
</div></div><br><br>---------- Forwarded message ----------<br>From: "Dirk Hünniger" <<a href="mailto:dirk.hunniger@googlemail.com">dirk.hunniger@googlemail.com</a>><br>To: <a href="mailto:python-users@uni-koeln.de">python-users@uni-koeln.de</a><br>Cc: <br>Date: Mon, 13 Jun 2016 08:13:13 +0200<br>Subject: Re: [python-users] Fiese Falle<br>Naja,<br>
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.<br>
Viele Grüße Dirk<br>
<br>
On 12.06.2016 23:14, Michael Kesper wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hallo Dirk, hallo zusammen,<br>
<br>
in der Tat:<br>
<br>
Python 2.7.9 / Python 3.4.2:<br>
>>> print(min("-1","-2"))<br>
-1<br>
>>> print(max("-1","-2"))<br>
-2<br>
<br>
Erwartet hätte ich eigentlich eine TypeError Exception.<br>
<br>
Viele Grüße<br>
Michael<br>
________________________________________<br>
<br>
Diese Mail erhalten Sie ueber die Mailingliste python-users der Universitaet zu Koeln<br>
Nachrichten an: <a href="mailto:python-users@uni-koeln.de" target="_blank">python-users@uni-koeln.de</a><br>
Abonnement und Benutzereinstellungen: <a href="https://lists.uni-koeln.de/mailman/listinfo/python-users" rel="noreferrer" target="_blank">https://lists.uni-koeln.de/mailman/listinfo/python-users</a><br>
Listenarchiv: <a href="http://pycologne.de/mlsearch.html" rel="noreferrer" target="_blank">http://pycologne.de/mlsearch.html</a><br>
<br>
pyCologne Homepage: <a href="http://pycologne.de/" rel="noreferrer" target="_blank">http://pycologne.de/</a><br>
</blockquote>
<br>
<br></blockquote></div><br></div>