Hallo,
gibt es eine Möglichkeit, in einer Zeile einer Variablen einen Standardwert zuzuweisen, wenn die Variable auf None steht?
Ungefähr so:
if VAR == None: VAR=0
Hintergrund: Ich lese eine CSV-Datei aus. Manche Felder sind leer (und damit die Variable die den Inhalt bekommt) und ich würde gerne nicht für jedes Feld zwei Zeilen (if + Zuweisung) schreiben. Das erscheint mir umständlich.
Viele Grüße,
Hanna
Standardwert setzen wenn None
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Gegenfrage: Wieso bindest Du die Spalten einer CSV-Datei an separate Namen? Wäre da eine Liste nicht besser geeignet? (im CSV-Modul wird das ja z.B. so gehandhabt)
Ansonsten gibt es conditional-expressions:
Ansonsten gibt es conditional-expressions:
Code: Alles auswählen
foo = bar if bar is not None else default
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
@BlackJack, Hyperion
Wieso eigentlich immer mit "is not" prüfen, würde es andersrum die Lesbarkeit dermaßen erschweren? Ich meine die Negation könnte man sich hier doch sparen, oder?
Wieso eigentlich immer mit "is not" prüfen, würde es andersrum die Lesbarkeit dermaßen erschweren? Ich meine die Negation könnte man sich hier doch sparen, oder?
Code: Alles auswählen
foo = default if bar is None else bar
@Xynon1: Im Regelfall ist der Standardwert ja fest und konstant und somit vom Standpunkt des Programmablaufs egal. Dagegen ist es zum Nachvollziehen des Programmablaufs immer wichtig zu wissen, von welchen Namen ein anderer Namen abhängt. Daher ist es sinnvoll, diesen variablen Ausdruck an den Anfang der Zeile zu stellen, wo er ins Auge fällt, und den konstanten Standardwert am Ende anzugeben, wo man ich einfach ignorieren kann, wenn er gerade nicht wichtig ist.
Nichts, es bleibt halt nur im Schädel das es eine Rechenoperation mehr ist , auch wenn ich eigentlich weiß, dass sowas absolut keine Rolle spielt.
@Xynon1: Wieso sollte das eine Rechenoperation mehr sein? "foo is not None" ist nicht dasselbe wie "foo is (not None)" oder "not (foo is None)". "is not" ist ein eigenständiger Operator, genauso wie "not in" oder "!=".
Ok, wusste ich nicht, es sieht halt so aus. Aber selbst wenn es eine Negation wäre - Wen interessiert heute schon eine einzelne Negation?
Was wäre der, wenn auch klitzekleine, Nachteil an einer 'is not' Operation gegenüber einer 'is' Operation?
mutetella
mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit )
@mutetella: "is" ist eben das genaue Gegenteil von "is not", insofern ist es durchaus nachteilig, "is not" zu verwenden, wenn man eigentlich "is" braucht
@mutetella
Und wenn die Frage darauf abzielt, warum man nicht das ganze umdreht, dann lies doch nochmal meinen ersten Post hier im Thread und lunars mehr als ausführliche Antwort dazu.
Und wenn die Frage darauf abzielt, warum man nicht das ganze umdreht, dann lies doch nochmal meinen ersten Post hier im Thread und lunars mehr als ausführliche Antwort dazu.
@lunar: Danke für Deine Ausführung! Da lad' ich mir doch gleich meinen Philosophiestammtisch zum Grillen ein...
(Ob es wohl Sinn macht, wenn mein Verhaltenstherapeut auch dabei ist?)
@Xynon1: Schon klar, das habe ich gelesen und mir geht es in meiner Frage auch nicht um Dinge wie Lesbarkeit oder dergleichen.
Du sprachst davon, dass 'is not' eine Rechenoperation mehr bräuchte. Meintest Du damit, dass 'is' und 'not' jeweils eine Operation sind (was ja laut lunar eben nicht so ist) und deshalb mehr 'Vergleichsarbeit' nötig ist?
Oder gibt es dadurch, dass 'is not' ein eigenständiger Operator ist keine weiteren Unterschiede im dahinterliegenden Arbeitsaufwand (nicht im Ergebnis, @lunar )?
mutetella
(Ob es wohl Sinn macht, wenn mein Verhaltenstherapeut auch dabei ist?)
@Xynon1: Schon klar, das habe ich gelesen und mir geht es in meiner Frage auch nicht um Dinge wie Lesbarkeit oder dergleichen.
Du sprachst davon, dass 'is not' eine Rechenoperation mehr bräuchte. Meintest Du damit, dass 'is' und 'not' jeweils eine Operation sind (was ja laut lunar eben nicht so ist) und deshalb mehr 'Vergleichsarbeit' nötig ist?
Oder gibt es dadurch, dass 'is not' ein eigenständiger Operator ist keine weiteren Unterschiede im dahinterliegenden Arbeitsaufwand (nicht im Ergebnis, @lunar )?
mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit )
@mutetella: Mit "is" und "is not" verhält es sich ähnlich wie mit "==" und "!=". In der Implementierungen dieser Operatoren kann es natürlich Unterschiede geben, es mag durchaus sein, dass "is not" intern als "not (… is …)" implementiert ist, ebenso wie man "!=" oft als "not (… == …)" implementiert. Als Python-Entwickler aber muss Dich das nicht interessieren, Du kannst einfach beides als atomare Operatoren betrachten (atomar in dem Sinne, dass es keine zusätzlichen Zwischenschritte gibt).
Soll heißen, Du beschäftigst Dich schon wieder mit völlig irrelevanten Dingen. Wenn Du darüber nachdenkst, ob ein Operator mehr „Vergleichsarbeit“ leistet als ein anderer, ist Python wirklich nicht die richtige Sprache für Dich Python verwendet man, weil man sich zugunsten der Les- und Wartbarkeit gerne ein paar zusätzliche Rechenoperationen leisten kann.
Soll heißen, Du beschäftigst Dich schon wieder mit völlig irrelevanten Dingen. Wenn Du darüber nachdenkst, ob ein Operator mehr „Vergleichsarbeit“ leistet als ein anderer, ist Python wirklich nicht die richtige Sprache für Dich Python verwendet man, weil man sich zugunsten der Les- und Wartbarkeit gerne ein paar zusätzliche Rechenoperationen leisten kann.
lunar hat geschrieben:Soll heißen, Du beschäftigst Dich schon wieder mit völlig irrelevanten Dingen.
Du hast vollkommen Recht! Dabei wollte und will ich doch nur ein Kalenderprogramm schreiben. Und immer wieder bleibe ich an solchen Fragen hängen. Obwohl es in der (Python-)Praxis kaum bis gar keine Rolle spielt, faszinieren mich diese Themen.
Wahrscheinlich wohl deshalb, weil ich kaum eine Ahnung davon habe...
Ok, dann werd' ich mich jetzt wieder meinem Kalender widmen, damit ich die unzähligen Termine, die ich in ein paar Jahren als Rentner zu verwalten habe, über einen Hut bekomme...
mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit )
Da bist du nicht der einzigemutetella hat geschrieben:Und immer wieder bleibe ich an solchen Fragen hängen. Obwohl es in der (Python-)Praxis kaum bis gar keine Rolle spielt, faszinieren mich diese Themen.