Re: [Python-de] Wie sieht Python fuer mich aus?
Am 09.01.2017 um 14:31 schrieb Sven R. Kunze:
Es ist zwar schön, die Wahl zu haben, aber hier empfehle ich zumindest einfach 4 Leerzeichen pro Einrückungstiefe und fertig.
Ich finde 3 Leerzeichen für meine Programme optimal. Mag sein, das dies von dem Level und der Anzahl der Zeilen, die man gleichzeitig auf einem Monitor sieht. Wenn z.B. nach if ein 3 Zeilen Block folgen würde, wären vielleicht 2 Lerrzeichen optimal. Bei vielen Zeilen ist der Anfang und ende nicht erkennbar, gleich wieviel man einrückt. Und bei if Gebirge rückt der Programmteil zu weit nach rechts.
Häufig werden vier Leerzeichen if 3 zeilenchen verwendet.
Die 4 Leerzeichen passen gut zusammen mit der IDE PyCharm.
4 Zeichen sind bei diversen Editoren voreingestellt. Meist kann ich dies auf 3 umstellen.
»==« bedeutet »ist gleich«, und »!=« bedeutet »ist nicht gleich«.
Es gibt noch "is" und "is not" für Objekt-Identitätsvergleich.
Pointer Vergleich bzw. Adressvergleich. (Adresse =id(variable)) Verwenden tue ich eher den Typvergleich etwa: if type(variable)==type([]): for elem in variable: .. Hermann der noch ein is verwendet hat. -- http://www.hermann-riemann.de
Am 09.01.2017 um 17:33 schrieb Hermann Riemann: [...]
Verwenden tue ich eher den Typvergleich etwa: if type(variable)==type([]): for elem in variable: ..
"type(var) is list" oder ggf. "isinstance(var, list)" -- I have seen things you lusers would not believe. I've seen Sun monitors on fire off the side of the multimedia lab. I've seen NTU lights glitter in the dark near the Mail Gate. All these things will be lost in time, like the root partition last week.
Am 09.01.2017 um 18:41 schrieb Thomas Orgelmacher:
Verwenden tue ich eher den Typvergleich etwa: if type(variable)==type([]): for elem in variable: ..
"type(var) is list" oder ggf. "isinstance(var, list)"
Dazu müsste ich die Sprachkenntnisse erweitern. Das type([]) ist für mich besser verständlich und leichter lesbar als is list oder gar isinstance. Der Zeitunterschied beim Ablauf dürfte kaum merkbar sein. Hermann der sprachabhängige Spezialfälle für problematisch hält. -- http://www.hermann-riemann.de
Am 09.01.2017 um 19:11 schrieb Hermann Riemann:
Am 09.01.2017 um 18:41 schrieb Thomas Orgelmacher:
"type(var) is list" oder ggf. "isinstance(var, list)"
Dazu müsste ich die Sprachkenntnisse erweitern. Das type([]) ist für mich besser verständlich und leichter lesbar als is list oder gar isinstance.
Der Zeitunterschied beim Ablauf dürfte kaum merkbar sein.
Das hängt vom Kontext ab. Du instantiierst vollkommen unnötig eine Liste und fragst dann deren Typ ab. Die Liste muss dann vom GC wieder weggeräumt werden. "list" ist eh da und muss auch nicht weggeräumt werden. Passiert das in einer Schleife, merkt man das. Interpretiert ist anders als kompiliert. Thomas -- I have seen things you lusers would not believe. I've seen Sun monitors on fire off the side of the multimedia lab. I've seen NTU lights glitter in the dark near the Mail Gate. All these things will be lost in time, like the root partition last week.
On 09.01.2017 17:33, Hermann Riemann wrote:
Wenn z.B. nach if ein 3 Zeilen Block folgen würde, wären vielleicht 2 Lerrzeichen optimal. Bei vielen Zeilen ist der Anfang und ende nicht erkennbar, gleich wieviel man einrückt. Und bei if Gebirge rückt der Programmteil zu weit nach rechts.
Ich weiß nicht recht. Für private Projekte kann man das sicherlich so machen. Allerdings kann ich hier nur beitragen, dass wir intern als Team dann sagen: 1) verwende nicht so viele ifs 2) mach diese Zeilen kürzer 3) nimm bitte immer 4 Leerzeichen Klingt erstmal komisch, geht aber erstaunlich oft. :) Anderenfalls würde es das Zusammenarbeiten im Team extrem erschweren.
Verwenden tue ich eher den Typvergleich etwa: if type(variable)==type([]): for elem in variable: ..
Vielleicht hier auch noch einen Hinweis: Dafür besser "isinstance" verwenden if isinstance(variable, list): for elem in variable: ... vG Sven
On Montag, 9. Januar 2017 17:33:05 Hermann Riemann wrote:
Am 09.01.2017 um 14:31 schrieb Sven R. Kunze:
Es ist zwar schön, die Wahl zu haben, aber hier empfehle ich zumindest einfach 4 Leerzeichen pro Einrückungstiefe und fertig.
Ich finde 3 Leerzeichen für meine Programme optimal. Mag sein, das dies von dem Level und der Anzahl der Zeilen, die man gleichzeitig auf einem Monitor sieht.
Wenn z.B. nach if ein 3 Zeilen Block folgen würde, wären vielleicht 2 Lerrzeichen optimal. Bei vielen Zeilen ist der Anfang und ende nicht erkennbar, gleich wieviel man einrückt. Und bei if Gebirge rückt der Programmteil zu weit nach rechts.
Ohne Dir zu Nahe treten zu wollen, aber zu viele Einrückungsebenen deuten auf (zu) schwach strukturierten Code hin. Die Einrückungstiefe zu verringern, verstärkt diesen Effekt nur noch: Siehe auch PEP 8 -- Style Guide for Python Code https://www.python.org/dev/peps/pep-0008/#indentation Pete
On 2017-01-09 17:33, Hermann Riemann wrote:
Am 09.01.2017 um 14:31 schrieb Sven R. Kunze:
»==« bedeutet »ist gleich«, und »!=« bedeutet »ist nicht gleich«.
Es gibt noch "is" und "is not" für Objekt-Identitätsvergleich.
Pointer Vergleich bzw. Adressvergleich. (Adresse =id(variable))
Ein Fallstrick bei der Verwendung von `id` ist, dass verschiedene Objekte aufgrund der Garbage Collection während der Ausführung die gleiche Id bekommen können. Mir fällt jetzt aber kein praktisches Beispiel ein, wo das _bei einem direkten Objektvergleich_ auftreten würde. Bei if id(objekt1) == id(objekt2): ... dürften `objekt1` und `objekt2` immer Namen sein, die an ein Objekt gebunden sind. Wenn man einen Objekt-Vergleich möchte, würde man wohl kaum Ausdrücke verwenden, die ganz oder teilweise "garbage-collected" werden könnten, nachdem nur einer der `id`-Aufrufe erfolgt ist. Oder hat jemand von euch schon Code gesehen, wo das relevant sein könnte? Wenn man `is` verwendet, muss man sich aber nicht mal Gedanken drüber machen. :-) Und `is` ist das normale Idiom für den Objekt-Vergleich. Viele Grüße Stefan
participants (5)
-
Hans-Peter Jansen
-
Hermann Riemann
-
Stefan Schwarzer
-
Sven R. Kunze
-
Thomas Orgelmacher