Ergebnis 1 bis 1 von 1
  1. #1
    Avatar von Mr.Servo
    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
    ReceiverDanke
    Box 1:
    GigaBlue UHD UE 4k Cable (openATV 7.4)
     
     
    Box 2:
    Mut@nt HD51 4k Cable (oATV DEVEL)
     
     

    Lightbulb 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
    Man kann jetzt rumspielen, z.B. das Mitglied auf 'passiv' stellen (also Mitglied = False, 4711, "Caesar", 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.Servo
    Geändert von Mr.Servo (30.01.2021 um 23:30 Uhr)

  2. Thanks Topfi, Anskar bedankten sich
    •   Alt Advertising

       


Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:39 Uhr.
Powered by vBulletin® Version 4.2.5 (Deutsch)
Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.
Resources saved on this page: MySQL 5,56%
Parts of this site powered by vBulletin Mods & Addons from DragonByte Technologies Ltd. (Details)
vBulletin Skin By: PurevB.com