Ergebnis 1 bis 1 von 1
-
30.01.2021, 14:16 #1
- Registriert seit
- 10.08.2020
- Ort
- Pfalz / Palatinate
- Beiträge
- 2.619
- Thanks (gegeben)
- 1796
- Thanks (bekommen)
- 2417
- Total Downloaded
- 56,91 MB
- Total Downloaded
- 56,91 MB
Box 1:GigaBlue UHD UE 4k Cable (openATV 7.4)Box 2:Mut@nt HD51 4k Cable (oATV DEVEL)Tips für die Umstellung von Plugins von Python2 auf beide Versionen (Python2+3)
Hallo Zusammen,
Die Umstellung von Python2 auf Python3 ist eine Sache, aber das so umzufummeln daß es sogar bei beiden läuft, ist die hohe Kunst! Die Übergabe einer Liste an eine Funktion neben weiteren Übergabeparametern (das ähnliche Problem mußte in der "LCD4Linux V5.0-r7" gelöst werden)
Beispiel gefällig?
Hier im Beispiel sollen die Daten eines Mitglieds in der Liste 'Mitglied' [aktiv, Nummer, Name, Gewicht] ausgegeben werden. Dazu werden diese Mitglieddaten der Funktion "Ausgabe" neben weiteren Variablen (Ausgabetext, Erlaubt) übergeben. Hier im Beispiel nennt sich dieser Übergabeblock also (Mitglied, Auswahltext, Erlaubt).
Die Ausgabe sieht dann wie folgt aus:
Code:Auflistung: aktive Mitglieder ----------------------------- MTGL-Nr: 4711 Name : Caesar Gewicht: 97.4
Oder man sperrt die Ausgabe, z.B. wegen fehlender Berechtigung (also Erlaubt = False).
Aber das Programm muß je nach Python-Version anders aussehen, ansonsten gibt's pronto eine Fehlermeldung:
Python 2 (Übergabe einer Liste inkl. Zerlegung in Einzelvariablen an eine Funktion) Python 3 (Übergabe einer Liste inkl. Zerlegung in Einzelvariablen an eine Funktion) Code:def Ausgabe((a, b, c, d), x, y): if y: print ("Auflistung: " + x) print ("-" * 29) if a: print ("MTGL-Nr: " + str(b)) print ("Name : " + c) print ("Gewicht: " + str(d)) else: print ("MTGL-Nr: " + str(b) + " {ist nicht aktiv}") else: print ("Ausgabe ist gesperrt!") # Hauptprogramm Mitglied = [True, 4711, "Caesar", 97.4] # Datentyp: List Auswahltext = "aktive Mitglieder" # Datentyp: String Erlaubt = True # Datentyp: Boolean Ausgabe(Mitglied, Auswahltext, Erlaubt)
Code:def Ausgabe(a, b, c, d, x, y): if y: print ("Auflistung: " + x) print ("-" * 29) if a: print ("MTGL-Nr: " + str(b)) print ("Name : " + c) print ("Gewicht: " + str(d)) else: print ("MTGL-Nr: " + str(b) + " {ist nicht aktiv}") else: print ("Ausgabe ist gesperrt!") # Hauptprogramm Mitglied = [True, 4711, "Caesar", 97.4] # Datentyp: List Auswahltext = "aktive Mitglieder" # Datentyp: String Erlaubt = True # Datentyp: Boolean Ausgabe(*Mitglied, Auswahltext, Erlaubt)
Python 2 online ausführen (Code dann hier reinkopieren)Python 3 online ausführen (Code dann hier reinkopieren)
Wie muß nun der Code aussehen, damit er auf beiden Pythonversionen arbeitet?
Nun hier gibts wohl keine "ordentliche" Lösung, sondern nur diesen "Workaround" hier (Danke an @Captain, der das gleich 48x in der "LCD4Linux V5.0-r7" vorgeturnt hat).
Python 2+3 (Übergabe einer Liste an eine Funktion mitels Dummyliste "workaround") Code:def Ausgabe(workaround, x, y): (a, b, c, d) = workaround if y: print ("Auflistung: " + x) print ("-" * 29) if a: print ("MTGL-Nr: " + str(b)) print ("Name : " + c) print ("Gewicht: " + str(d)) else: print ("MTGL-Nr: " + str(b) + " {ist nicht aktiv}") else: print ("Ausgabe ist gesperrt!") # Hauptprogramm Mitglied = [True, 4711, "Caesar", 97.4] # Datentyp: List Auswahltext = "aktive Mitglieder" # Datentyp: String Erlaubt = True # Datentyp: Boolean Ausgabe(Mitglied, Auswahltext, Erlaubt)
Oder hat jemand eine bessere Lösung für dieses Problem? Dann bitte her damit.
Danke & Gruß.....Mr.ServoGeändert von Mr.Servo (30.01.2021 um 23:30 Uhr)
-
Danke - 2 Thanks
-
Advertising
Lesezeichen