Skip to content

Python - Match-Case Statement

Python3
1 1 161
  • Warum wollte iich unbedingt mal endlci Python 3.10 ausprobieren? Wegen dem Match-Case Statement. Ich wollte mal ausprobieren, ob das angenehmer zu programmieren ist, als diese verschachtelten if-else Statements.

    Aus der Anleitung

    match subject:
        case <pattern_1>:
            <action_1>
        case <pattern_2>:
            <action_2>
        case <pattern_3>:
            <action_3>
        case _:
            <action_wildcard>
    

    Einen schönen Beitrag habe ich auch im Internet gefunden. Ok, hier mal ein Beispiel.

    match_list = [backup_data[row].rest, bool(backup_data[row].password)]
    match match_list:
    

    Ich erzeuge eine Liste, mit zwei Variablen.

    • backup_data[row].rest - 0/1
    • backup_data[row].password - password/keines gesetzt

    Das kann man dann abfragen mit

    case ["0", False]:
    

    Dann gibt es in meinem Fall noch

    case["0", True]:
    case["1", False]:
    case["1", False]:
    

    Dann könnten man noch das hier machen

    case _:
    

    Der fängt alles ab, was vorher nicht erfolgreich war.

    Ich finde das recht praktisch, weil es doch um einiges angenehmer zu lesen ist.

  • 0 Stimmen
    3 Beiträge
    46 Aufrufe
    frankm@nrw.socialF
    @guerda Und vor allen Dingen muss es Spaß machen.
  • Python - Interessante Packages

    Python3 python linux
    1
    0 Stimmen
    1 Beiträge
    151 Aufrufe
    Niemand hat geantwortet
  • Vorstellung Restic UI Flask

    Restic UI Flask restic restic-ui flask python
    1
    6
    0 Stimmen
    1 Beiträge
    312 Aufrufe
    Niemand hat geantwortet
  • Python & Redis-Datenbank

    Verschoben Linux python redis
    3
    0 Stimmen
    3 Beiträge
    213 Aufrufe
    FrankMF
    Heute dann die nächste Herausforderung. Mein JSON soll so aussehen, damit ich das entsprechend erweitern kann. Stocks {0: {'stockname': 'Deutsche Telekom Aktie', 'wkn1': '4534543534', 'wkn2': 'sfsdfsdfsfdfd', 'quantity': 100}, 1: {'stockname': 'Henkel', 'wkn1': '4534543534', 'wkn2': 'sfsdfsdfsfdfd', 'quantity': 50}} Die Daten sollen wie oben schon ausprobiert, in einer Redis Datenbank liegen. So weit auch kein großes Problem. ABER, der Zugriff auf diese Daten war dann meine nächste Hürde Ok, ich habe also mehrere Einträge im JSON File bzw. in der Datenbank. Wie komme ich da nun wieder dran. Ein paar später dann die Lösung. Wie komme ich an den einzelnen Eintrag, also über den Index?? r1.json().get('stocks', 1) Gibt als Ergebnis {'stockname': 'Henkel', 'wkn1': '4534543534', 'wkn2': 'sfsdfsdfsfdfd', 'quantity': 50} Ok, das passt schon mal. Somit kann man dann gewohnt auf die einzelnen Elemente zugreifen. print("TESTING", testing['stockname']) Ausgabe TESTING Henkel Ok, Teil 1 erledigt. Jetzt habe ich ja irgendwann mehrere Elemente in der Liste und brauch dann den letzten Index , um damit was machen zu können. Also, z.B. durch die Daten zu loopen. objkeys = r1.json().objkeys('stocks') print("Objkeys", objkeys) Ausgabe Objkeys ['0', '1'] Ok, kommt eine Liste des Index zurück. Damit kann man arbeiten Ich hatte dann zum Testen mittels einer while Schleife die Daten geladen, aber jetzt beim Tippen klingelt es und wir machen das schön mit enumerate @staticmethod def load(): data = {} for count, value in enumerate(objkeys): testing = r1.json().get('stocks', count) data[count] = { "stockname": testing['stockname'], "wkn1": testing['wkn1'], "wkn2": testing['wkn2'], "quantity": testing['quantity']} return data Somit habe ich die Daten aus der Redis Datenbank in einem Objekt und kann damit arbeiten.
  • List comprehensions

    Python3 python
    1
    2
    0 Stimmen
    1 Beiträge
    112 Aufrufe
    Niemand hat geantwortet
  • PyWebIO - Footer bearbeiten

    PyWebIO pywebio python
    1
    1
    0 Stimmen
    1 Beiträge
    161 Aufrufe
    Niemand hat geantwortet
  • Python3 - VSCodium Language Settings

    Python3 python
    3
    3
    0 Stimmen
    3 Beiträge
    238 Aufrufe
    FrankMF
    Ich habe da jetzt gestern stundenlang mit rum gespielt, insbesondere Deinstallation, Neuinstallation, VSCode Installation usw. Das ging einfach nicht. Irgendwo meine ich dann gelesen zu haben, das VSCode auf python 3.9 festgenagelt ist und deswegen so einige Dinge nicht gehen. Nagelt mich darauf nicht fest, ich bin in dieser Coding Welt kein Profi. Dann fiel mir ein, das ich schon vor einigen Monaten mal kurz einen Blick in Pycharm geworfen hatte. Gefiel mir damals gar nicht. Das habe ich heute mal auf die Platte geworfen um zu schauen, ob das vernünftig mit dem o.g. Problem umgehen kann. [image: 1662928323311-6f1c3906-05a3-4126-81d4-7fdf6aa27faa-grafik.png] Puuuh, da kann man ja noch viel mehr einstellen als bei VSCode, oder mindestens ähnlich viel. Das kann einen ganz schön überfordern. Also Stück für Stück die nächsten Tage. Was ist mir positiv aufgefallen? Wenn ich VSCodium neu installiert habe, habe ich unheimlich mit Python Versionen, pipenv usw. zu kämpfen gehabt. Bis da mein Projekt wieder lief, konnte schon mal was Zeit vergehen. Mit Pycharm Ordner ausgewählt, angeklickt das man dem Coder vertraut. Noch eine Python Version ausgewählt, danach fragt er das er eine pipenv Umgebung gefunden hat und diese nutzen möchte. Ja angeklickt und fertig. Keine zwei Minuten und das Projekt lief wieder Erster Git Commit ging auch sofort und ohne Murren. Schon mal ganz viele Pluspunkte gesammelt. Was mich aktuell beschäftigt, ist der Tab Problems, da hatte ich vorher deutlich weniger. Da muss ich mich noch was einarbeiten und schauen, wo man das alles einstellen kann. Ich halte euch auf dem Laufenden.. Vielleicht fliegt ja das VSCo** Zeug runter!? Mal sehen..
  • PyQt6 - QSettings

    Python3 python
    3
    0 Stimmen
    3 Beiträge
    499 Aufrufe
    FrankMF
    Möglichkeit 1 Das hier settings = QSettings("Frank_Mankel", "Restic_UI") erzeugt unter /home/frank/.config/Frank_Mankel/Restic_UI.conf die Konfigurationsdatei. Möglichkeit 2 Das hier settings = QSettings("Restic_UI") erzeugt unter /home/frank/.config/Restic_UI.conf die Konfigurationsdatei. Damit habe ich die grundlegenden Dinge, hoffentlich , verstanden. Für den Rest mal in die Dokumentation schauen. Sehr hilfreich war auch mal ein Blick auf die Definition der Klasse. Rechtsklick auf QSettings und dann Go to Definition class QSettings(QObject): class Scope(enum.Enum): UserScope = ... # type: QSettings.Scope SystemScope = ... # type: QSettings.Scope class Format(enum.Enum): NativeFormat = ... # type: QSettings.Format IniFormat = ... # type: QSettings.Format InvalidFormat = ... # type: QSettings.Format class Status(enum.Enum): NoError = ... # type: QSettings.Status AccessError = ... # type: QSettings.Status FormatError = ... # type: QSettings.Status [..gekürzt..]