2017-02-04 1 views
0

Verwendung TinyDB Ich habe ein Objekt für die Datenbankoperationen wie folgt aus:Call Funktion in If-Anweisung/Aufruf mit print() - gute Praxis?

#database.py 
class DataBase(object): 
    """CRUD access to database.""" 

    def __init__(self): 
     """Initialize database.""" 
     self.db = TinyDB('/db.json') 

    def new(self, **kwargs): 
     """Add a new entry to the database.""" 
     if self.db.insert(kwargs): # 1 
      return 'New item added to the database.' 
     else: 
      return 'Item NOT added to the database.' 

Verfahren ‚Einfügen‘ aus TinyDB liefert die ID des Eintrags, nachdem es eingelegt wird, siehe 1 #. Also ich verwende diesen Effekt zu einem Erfolg zurück/Meldung fehlschlagen, die angezeigt werden können, wenn die Funktion mit Druck() aufgerufen wird:

#main.py 
#... 
@entry.command('new') 
@click.argument('first_arg', type=str) 
@click.argument('second_arg', type=str) 
def entry_new(**kwargs): 
    """Create a new entry.""" 
    if kwargs is not None: 
     click.echo(a_db.new(**kwargs)) # 2 
#... 

Frage 1:

if self.db.insert(kwargs): 

Ist es ' good practice ', um die insert-Funktion in der condition-Anweisung des if-Blocks auszuführen? Wenn nicht, was sind die Alternativen, um eine if/else-Anweisung basierend auf dem Rückgabewert zu erstellen?

Frage # 2:

click.echo(a_db.new(**kwargs)) 

Der gesamte Prozess eine Datei in die Datenbank eingefügt wird in einer Druck-Anweisung eingewickelt in der Lage sein, den Rückgabewert der Insert-Funktion zugreifen. Ist diese 'gute Praxis' oder gibt es bessere Möglichkeiten, die Einfügefunktion aufzurufen, auf den Rückgabewert zuzugreifen und sie auszudrucken?

Vielen Dank im Voraus für Ihre Klarstellungen!

Antwort

1

Es kann schwer sein zu sagen, was "gute Praxis" ist, da die Leute oft unterschiedliche Meinungen darüber haben, was sie sind.

1: Sie verwenden den zurückgegebenen Wert nicht woanders, daher scheint es in Ordnung zu sein, ihn nur innerhalb der bedingten Anweisung zu haben. Wenn die insert-Methode eine Ausnahme ausgelöst hat, müssten Sie damit umgehen, aber das scheint es nicht zu tun.

2: Die gleiche Antwort wie in Nummer 1. Wenn Sie die Variable nicht mehr verwenden, dann wäre das in Ordnung.