Hallo,
hab gerade das erste mal eine nützliche Verwendung von yield für mich entdeckt.
Für mich stellt sich jetzt nur die Frage, ob man in die ausführende Funktion die yield enthält, eine "Rückantwort" geben kann.
Wie ich mir das ganze vorstelle, hoffe ich wird ersichtlich durch die Kommentare an den Zeilen 26,27 und 34.
Die alternative was mir natürlich jetzt unterm schreiben einfällt wäre, den yield Generator innerhalb einer Klasse zu erstellen. Über die Klasse stelle ich dann ein Attribut zur Verfügung was sich außerhalb verändern lassen würde....richtig?
Aber dennoch wäre es auch mit dem aktuell vorhandenen Code möglich?
Python
import peewee
import os
SKRIPTPFAD = os.path.abspath(os.path.dirname(__file__))
db = peewee.SqliteDatabase(os.path.join(SKRIPTPFAD, "messagebox.db3"))
class MessageBox(peewee.Model):
nachricht = peewee.CharField()
read_liste = peewee.TextField(default="")
erledigt = peewee.BooleanField(default=False)
class Meta:
database = db
def add_message(text):
MessageBox.create(nachricht=text)
def get_new_message(uid):
for read in MessageBox.select().where(~(MessageBox.read_liste.contains(uid))):
yield read.nachricht
read.read_liste += "{} ".format(uid)
read.save()
# In Datenbank vermerken ob Taster A oder Taster B gedrückt worden ist.
# IF Abfrage, Anweisung abhänging von Taster A oder Taster B
if __name__ == "__main__":
db.create_tables([MessageBox])
for nachricht in get_new_message(12):
print(nachricht)
# Rückantwort in Generator (get_new_message) ob Taster A oder Taster B gedrückt worden ist.
# add_message("Testnachricht")
Alles anzeigen