Seite 1 von 1

Warum ist es eine unsitte Variablem mit Nummern zu erweitern?

Verfasst: Dienstag 10. Oktober 2023, 19:26
von kiaralle
Hallo,

In meinen Skript wurde ich ermahnt Variablen nicht mit Zahlen zu erweitern. Dies wäre nicht fein.

Also zum Bleistift:

schalter_1 = 1
schalter_2 = 0
....

Welche Begründung gibt es für diese Ablehnung?
Es ist doch eigentlich Praktisch.
Könnte mir vorstellen, das es noch mehr Neulinge gibt die den selben "Fehler" begehen.
Eine Erklärung hilft immer.

Danke Ralf

Re: Warum ist es eine unsitte Variablem mit Nummern zu erweitern?

Verfasst: Dienstag 10. Oktober 2023, 19:35
von sparrow
Naja, was ist denn daran praktischer als

Code: Alles auswählen

schalter = [True, False]
Stell mal fest, ob irgend ein Schalter an ist. Egal wie viele Schalter es sind, als Liste ist das immer

Code: Alles auswählen

any(schalter)
. Und bei den nummerierten Variablen?

Also welchen Vorteil genau siehst du gegenüber der Liste?

Re: Warum ist es eine unsitte Variablem mit Nummern zu erweitern?

Verfasst: Dienstag 10. Oktober 2023, 19:37
von __deets__
Was ist denn Schalter 1? Und was Schalter 2? Heißen deine Kinder auch Kind 1 und Kind 2? Und wenn das mehr Schalter werden, und der Code umfangreicher, erinnerst du dich an jeder einzelnen Stelle daran, welche Nummer jetzt die richtige ist?

Das ist der eine, gewichtige Grund. Namen helfen beim Verständnis, und vermeiden Fehler. schalter_notaus und schalter_schwimmer zB.

Und dann sind da natürlich noch Mengen an Dingen, bei denen man statt diskreten Variablen eher Datenstrukturen benutzen will. Also zb eine Liste von Schaltern. Weil die alle zusammen etwas bedeuten, zb 8 DIP-Schalter für eine Kodierung zb eines Modus.

Re: Warum ist es eine unsitte Variablem mit Nummern zu erweitern?

Verfasst: Dienstag 10. Oktober 2023, 19:49
von DeaD_EyE
Meinst du so?

Code: Alles auswählen

schalter_1 = 1
schalter_2 = 1
schalter_3 = 1
schalter_4 = 0
schalter_5 = 0
schalter_6 = 1
schalter_7 = 1
schalter_8 = 1
schalter_9 = 1
schalter_10 = 0
schalter_11 = 0
schalter_12 = 1
schalter_13 = 1
schalter_14 = 1
schalter_15 = 0
schalter_16 = 0
schalter_17 = 1
schalter_18 = 0
schalter_19 = 1
schalter_20 = 1
schalter_21 = 0
schalter_22 = 0
schalter_23 = 1
schalter_24 = 0
schalter_25 = 1
schalter_26 = 1
schalter_27 = 0
schalter_28 = 1
schalter_29 = 0
schalter_30 = 1
schalter_31 = 0
schalter_32 = 0
schalter_33 = 1
schalter_34 = 0
schalter_35 = 1
schalter_36 = 0
schalter_37 = 1
schalter_38 = 0
schalter_39 = 1
schalter_40 = 0
schalter_41 = 1
schalter_42 = 1
schalter_43 = 1
schalter_44 = 1
schalter_45 = 1
schalter_46 = 1
schalter_47 = 1
schalter_48 = 0
schalter_49 = 0

Re: Warum ist es eine unsitte Variablem mit Nummern zu erweitern?

Verfasst: Dienstag 10. Oktober 2023, 20:15
von kiaralle
Der Grund für die Rückverfolgung im Ablauf ist schon klar.
Benutze immer klare Bezeichnungen, eventuell Datenstrukturen wenn man etwas bündeln will...

Aber eine Auswirkung auf den Ablauf des Programms gibt es keine. Oder?

Wenn man eine Relaiskarte oder gar mehrere steuert und unklar ist, was am Relais 1 - 8 angeschlossen so wird man um eine Nummerierung nicht herum kommen. Denke ich.
Dann ist es eben karte_1_relais_1 ... karte_1_relais_8, karte_2_relais_1 ... karte_2_relais_8.
Etwas anderes würde mir hier jetzt nicht einfallen.

Re: Warum ist es eine unsitte Variablem mit Nummern zu erweitern?

Verfasst: Dienstag 10. Oktober 2023, 20:39
von __deets__
Wieso ist eine Relais-Karte besonders? Entweder hängen da unterschiedliche Dinge dran, dann kann man die auch benennen. Oder man benutzt eine Liste.

Und du hast recht, dem Computer ist der Name egal. Es geht aber um den Programmierer. Der macht die Fehler, nicht der Computer.

Re: Warum ist es eine unsitte Variablem mit Nummern zu erweitern?

Verfasst: Dienstag 10. Oktober 2023, 21:08
von grubenfox
Wobei... die süße "Relais-Katze" :) war das der Mensch mit einem Tippfehler oder diesmal der Computer mit einer wilden Autokorrektur? ;)

Re: Warum ist es eine unsitte Variablem mit Nummern zu erweitern?

Verfasst: Dienstag 10. Oktober 2023, 21:39
von __blackjack__
@kiaralle: Wie steuert man etwas mit Relais wenn man gar nicht weiss was da dran hängt? 🤔

Re: Warum ist es eine unsitte Variablem mit Nummern zu erweitern?

Verfasst: Donnerstag 12. Oktober 2023, 20:12
von kiaralle
Bei meiner Software für den Lastabwurf im Inselnetz der PV, für angeschlossenen Verbraucher, an eben dieser Relaiskarte.
Der User kann selber entscheiden was er da anschließt. Ich kenne seinen Bedarf nicht.
Somit kann ich im Skript keine Bezeichnungen wie Heizung, Pumpe Garten, Wallbox... verwenden.

Re: Warum ist es eine unsitte Variablem mit Nummern zu erweitern?

Verfasst: Donnerstag 12. Oktober 2023, 20:15
von __deets__
Dann ist es eben eine Liste von Kanaelen. Immer noch kein Grund, etwas durchzunummerieren. Aber ein ernstzunehmendes Skript haette dafuer eine Konfiguration, in der dann wiederum die Kanaele auch benannt werden koenne, damit zB im Logging auch was vernuenftiges steht, wie "Waschmaschine abgeschaltet" statt "Kanal 3 abgeschaltet", wo man schon wieder wissen muss, was das denn genau war.

Re: Warum ist es eine unsitte Variablem mit Nummern zu erweitern?

Verfasst: Donnerstag 12. Oktober 2023, 21:15
von kiaralle
Da komme ich jetzt nicht ganz mit.
Das interessiert mich jetzt wirklich. Hänge da irgendwie fest.

Auf der php-Seite kann ich ja über den Status (wird vom python in die status.txt) geschrieben etwas zuordnen. Somit wird auf der Webseite der Status vom Relais angezeigt.
Von der php-Seite aus vergebe ich reale Namen (schreib ich in eine Config) für die einzelnen Relais.

Wie kann ich das jetzt im python-Skript einfügen? Also aus der Config lesen bekomme ich ja hin, kein Problem.
Es bleibt doch bei meiner Nummerierung. Oder nicht? ...Wie ?

Code: Alles auswählen

relais  = [
	[relais_1, "Bezeichnung 1 aus der config.txt "],
	[relais_2, "Bezeichnung 2 aus der config.txt "]
]
Habt ihr eine Stück Code zur Veranschaulichung damit es bei mir klick macht?

Re: Warum ist es eine unsitte Variablem mit Nummern zu erweitern?

Verfasst: Donnerstag 12. Oktober 2023, 22:15
von sparrow
Da komme ich jetzt nicht mehr mit.
Was hat denn jetzt PHP damit zu tun?

Es bleibt _nie_ bei einer Nummerierung. Weil das nur Nachteile und keine Vorteile hat.

Wenn du mehrere Relais-Karten hast und die wirklich generisch haben möchtest, dann ist das eine Liste von Karten.
Und die Karten sind mindestens Datenstrukturen der einzelnen Relais oder Objekte, die das entsprechend abbilden.

Aber es sind sicher nicht durchnummerierte Namen.

Re: Warum ist es eine unsitte Variablem mit Nummern zu erweitern?

Verfasst: Donnerstag 12. Oktober 2023, 22:18
von Sirius3
Die Relais per for-Schleife in eine Liste, es gibt keine Variable relais_1 oder relais_2, denn dann hättest Du ja den selben Code mehrfach kopiert in der Pythondatei stehen.

Woher kommt jetzt PHP? Eigentlich möchte man nicht mehrere "Programmier"sprachen mischen, wenn man es vermeiden kann.
Config-Dateien speichert man am besten als Json oder YAML aber niemals als Text-Datei.