2017-08-27 10 views
4

Es scheint, dass float.is_integer ist die einzige "ist" -Methode mit einem Unterstrich in seinem Namen unter den integrierten Typen in Python. Examples that don't umfassen einen Unterstrich: str.isalnum, str.isalpha, str.isdecimal, str.isdigit, str.isidentifier, str.islower, str.isnumeric, str.isprintable, str.isspace, str.istitle, str.isupper.Warum ein Unterstrich in `float.is_integer`, aber nicht in` str.isnumeric`?

Irgendwelche Hinweise, warum?

Von PEP 8, würde ich erwarten, dass alle diese Namen einen Unterstrich enthalten. Aber die Praktikabilität übertrifft die Reinheit (PEP 20), so dass die Unterstreichung in häufig verwendeten und kurzen Namen sinnvoll ist. Beide Namenskonventionen scheinen jedoch gleichzeitig eine Folge der Rückwärtskompatibilität zu sein (mit dem Modul logging als kanonisches Beispiel).

+2

Vielleicht weil 'float.is_integer' eine neuere Ergänzung (ab 2.6) ist, lange nachdem PEP8 etabliert wurde? Die 'str'-apis waren wahrscheinlich von Anfang an da und wurden aus Kompatibilitätsgründen nicht verändert (obwohl es wahrscheinlich in 3 hätte sein können). 'float.fromhex' könnte auch potentiell umbenannt werden, ich bin sicher, dass es mehr Fälle in den Standardtypen gibt. –

Antwort

2

A similar question wurde auf dem Python Bug-Tracker gefragt:

Vergleichen isinstance, issubclass und islower-is_integer, is_fifo und is_enabled. In Python 3.6, von allen Namen in der Standardbibliothek beginnend mit is, zähle ich 69 Namen mit dem Unterstrich und 91 ohne. Es scheint besser, sich auf die eine oder andere Weise zu entscheiden und dabei zu bleiben. Ich würde empfehlen, den Unterstrich für die Lesbarkeit zu verwenden.

Und die Antwort (von R. David Murray, ein Python-Kernentwickler) gab es:

Ja, das wäre schön. Python hat sich jedoch im Laufe der Zeit weiterentwickelt, und wir müssen die Rückwärtskompatibilität beibehalten. Die Namen sind was sie sind.

Angesichts der Zahlen in der Frage scheint es wie is_integer ist nicht die einzige Methode mit einem Unterstrich.

Verwandte Themen