Ist das Idiom pythonisch? (someBool und "True Result" oder "False Result")

7

Ich bin gerade in einem Open-Source-Python auf dieses Idiom gestoßen, und ich verschluckte mich an meinem Drink.

Statt:

%Vor%

oder sogar:

%Vor%

der Code gelesen:

%Vor%

Ich kann sehen, dass dies das gleiche Ergebnis ist, aber ist das ein typisches Idiom in Python? Wenn ja, läuft ein Performance-Hack schnell? Oder ist es nur ein einmaliges, das eine Überprüfung des Codes benötigt?

    
Oddthinking 06.12.2008, 01:57
quelle

5 Antworten

17

Das Idiom "a und b oder c" war der kanonische Weg, die ternäre Arithmetik auszudrücken, wenn in Python vor PEP 308 wurde geschrieben und umgesetzt. Dieses Idiom versagt, die Antwort "b" ist falsch selbst; Um den allgemeinen Fall zu unterstützen, könnten Sie

schreiben %Vor%

Eine alternative Schreibweise war

%Vor%

was mit der Einführung des Bool-Typs als

umgeschrieben werden könnte %Vor%

(falls es nicht klar ist: die Umwandlung in bool und der nicht-Operator ist notwendig, wenn a nicht bekannt ist, bool schon zu sein)

Heute sollte die Bedingungsausdrucksyntax verwendet werden, wenn das Ding ein Ausdruck sein muss; Ansonsten empfehle ich, die if-Anweisung zu verwenden.

    
Martin v. Löwis 06.12.2008, 02:14
quelle
9

Sie sollten Verwenden des und-oder Tricks (Abschnitt 4.6.1) von Dive Into lesen Python von Mark Pilgrim. Es stellt sich heraus, dass der und-oder Trick große Fallstricke hat, die Sie beachten sollten.

    
titaniumdecoy 06.12.2008 02:20
quelle
0

Dieser Code ist für meinen Geschmack ein großer, fugriger und schlauer, aber ich nehme an, dass an sich nichts falsch ist. Ich denke, das ist wirklich nur ein Fall von "mach alles in einer Linie" -Syndrom.

Ich persönlich hätte mich allerdings für die erste Form entschieden.

    
Jason Baker 06.12.2008 02:03
quelle
-1

Huch. Überhaupt nicht lesbar. Für mich bedeutet Pythonic einfach zu lesen.

%Vor%

Klingt etwas, was Sie in Perl tun würden.

    
Kozyarchuk 06.12.2008 02:15
quelle
-1

Nein, ist es nicht.

Ich hatte eine andere Frage .

wenn das Konstrukt

%Vor%

War nicht sehr willkommen (zumindest von der SO-Community) und das bevorzugte war:

%Vor%

Sie können Ihre eigenen Schlussfolgerungen ziehen. :)

    
OscarRyz 06.12.2008 02:10
quelle

Tags und Links