logische Operatoren ersetzen if-Anweisungen

8

Sind die folgenden Verwendungen von logischen Ausdrücken Pythonic / pep8 kompatibel?

  1. Dies:

    %Vor%

    anstelle von:

    %Vor%
  2. Dies:

    %Vor%

    anstelle von:

    %Vor%
  3. (Der Kurvenball?) Dies:

    %Vor%

    anstelle von:

    %Vor%
Scruffy 18.08.2013, 14:01
quelle

3 Antworten

1
___ qstntxt ___

Sind die folgenden Verwendungen von logischen Ausdrücken Pythonic / pep8 kompatibel?

  1. Dies:

    %Vor%

    anstelle von:

    %Vor%
  2. Dies:

    %Vor%

    anstelle von:

    %Vor%
  3. (Der Kurvenball?) Dies:

    %Vor%

    anstelle von:

    %Vor%
___ answer18299916 ___

PEP 8 hat nichts damit zu tun, wie Sie Ihre logischen Operatoren verwenden.

>

Unter der Annahme, dass die Motivation für die Verwendung der logischen Operatoren anstelle der Bedingungen kurz ist, ist dies besser mit dem ternären Operator zu erreichen:

  1. %code% anstelle von %code%

  2. %code% anstelle von %code%

  3. %code% oder nur %code% anstelle von %code%

Aber niemand verbietet dir, auch die anderen Versionen zu benutzen. Es ist alles ein Meter persönlicher Meinung. Die Motivation hinter der Einführung des ternären Operators war, die fehleranfälligen Versuche zu vermeiden, den gleichen Effekt mit den Operatoren %code% und %code% zu erreichen (siehe PEP 308 ). Sie ermöglichen auch ausgefallene Dinge in der Liste und einige weitere Dinge.

Sie werden nicht eingeführt, um komplexe if-Anweisungen zu ersetzen, sondern als pythonischer ternärer Operator: %code% .

    
___ answer18300026 ___

Ich glaube nicht, dass pep8 dies abdeckt, aber in meinen Beispielen sehen die %code% -Anweisungen besser lesbar aus (vor allem für Personen, die Python neu kennen und daher mehr Pythonic wegen "Lesbarkeitszählungen") als logische Operatoren , die immer noch pythonischer als ternäre Operatoren aussehen.

Allerdings sind ternäre Operatoren definitiv besser als %code% , %code% usw., weil sie lesbarer und weniger wahrscheinlich sind.

    
___ tag123python ___ Python ist eine dynamische und stark typisierte Programmiersprache, die die Usability betont. Zwei ähnliche, aber größtenteils inkompatible Versionen von Python sind weit verbreitet (2 und 3). Wenn Sie eine versionsspezifische Python-Frage haben, sollten Sie die Tags [python-2.7] oder [python-3.x] zusätzlich zum Tag [python] verwenden. Wenn Sie eine Python-Variante wie jython, pypy, iron-python usw. verwenden, kennzeichnen Sie diese bitte entsprechend. ___ qstnhdr ___ logische Operatoren ersetzen if-Anweisungen ___ answer18300721 ​​___

Im Gegensatz zu C und Java geben die logischen Operatoren von Python keine booleschen Werte zurück. Ich kann mir keinen anderen Anwendungsfall für dieses Sprachfeature neben dem in Ihrer Frage vorstellen. Wenn also die Sprachdesigner keine Features gedankenlos hinzufügen, ist es Pythonic (außer für # 3).

Es gibt viele Fälle, in denen das logische Kurzschluss-ODER zu Ihrem Vorteil genutzt werden kann. Hier ist eine einfache aus dem Quelltext von Anfragen :

%Vor%

Es ist sofort offensichtlich, was das Ergebnis dieses Codes sein sollte, da es sich wie ein Satz liest. Das soll nicht heißen, dass die ausführlichen Versionen nicht lesbar sind:

%Vor%

Und:

%Vor%

Aber sie sind überflüssig. Python verwendet die gleiche Syntax für Wörterbücher, um die gleiche Redundanz zu vermeiden:

%Vor%     
___ tag123pep8 ___ Kodierungskonventionen und Stilrichtlinien für Python. ___ tag123logicaloperators ___ Logische Operatoren sind Symbole, die bei der Auswertung boolescher Ausdrücke helfen. Diese sind in fast jeder Programmiersprache zu finden, die Boolean unterstützt. Häufige Beispiele sind && (AND), || (ODER), ! (NOT), == ([Wert] gleich), === ([Wert und Typ] gleich),> = (Größer als oder gleich), <= (Kleiner oder gleich),> (Größer als) und <(weniger als) ___
Blender 18.08.2013, 15:29
quelle
5

PEP 8 hat nichts damit zu tun, wie Sie Ihre logischen Operatoren verwenden.

>

Unter der Annahme, dass die Motivation für die Verwendung der logischen Operatoren anstelle der Bedingungen kurz ist, ist dies besser mit dem ternären Operator zu erreichen:

  1. x = a if a else b anstelle von x = a or b

  2. x = b if a else a anstelle von x = a and b

  3. x = x if x else y oder nur if not x: x = y anstelle von x = x or y

Aber niemand verbietet dir, auch die anderen Versionen zu benutzen. Es ist alles ein Meter persönlicher Meinung. Die Motivation hinter der Einführung des ternären Operators war, die fehleranfälligen Versuche zu vermeiden, den gleichen Effekt mit den Operatoren and und or zu erreichen (siehe PEP 308 ). Sie ermöglichen auch ausgefallene Dinge in der Liste und einige weitere Dinge.

Sie werden nicht eingeführt, um komplexe if-Anweisungen zu ersetzen, sondern als pythonischer ternärer Operator: x if condition else y .

    
Viktor Kerkez 18.08.2013 14:06
quelle
1

Ich glaube nicht, dass pep8 dies abdeckt, aber in meinen Beispielen sehen die if -Anweisungen besser lesbar aus (vor allem für Personen, die Python neu kennen und daher mehr Pythonic wegen "Lesbarkeitszählungen") als logische Operatoren , die immer noch pythonischer als ternäre Operatoren aussehen.

Allerdings sind ternäre Operatoren definitiv besser als condition and true_value or false_value , (false_value, true_value)[condition] usw., weil sie lesbarer und weniger wahrscheinlich sind.

    
rlms 18.08.2013 14:17
quelle

Tags und Links