2017-02-04 2 views
0

En utilisant tinydb j'ai un objet pour les opérations de base de données comme celle-ci:Appel de fonction dans if-Statement/evoke call avec print() - bonne pratique?

#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.' 

La méthode « insert » de tinydb renvoie l'identifiant de l'entrée après insertion, voir # 1. Donc j'utiliser cet effet pour renvoyer un message de succès/échec, qui peut être affiché lorsque la fonction est appelée avec impression():

#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 
#... 

Question n ° 1:

if self.db.insert(kwargs): 

Est-il ' bonne pratique »pour exécuter la fonction d'insertion à l'intérieur de l'instruction de condition de l'if-block? Si non, quelles sont les alternatives pour obtenir une instruction if/else basée sur la valeur de retour?

Question n ° 2:

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

Le processus d'insérer un fichier dans la base de données est enveloppé dans une version imprimée déclaration pour pouvoir accéder à la valeur de retour de la fonction d'insertion. Est-ce une bonne pratique ou existe-t-il de meilleurs moyens d'appeler la fonction d'insertion, d'accéder à la valeur de retour et de l'imprimer?

Merci d'avance pour vos précisions!

Répondre

1

Il peut être difficile de dire ce qu'est une «bonne pratique» car les gens ont souvent des opinions différentes sur ce qu'ils sont.

1: Vous n'utilisez pas la valeur retournée nulle part ailleurs, donc il semble correct de l'avoir seulement dans l'instruction conditionnelle. Si la méthode insert a déclenché une exception, vous devrez gérer cela, mais cela ne semble pas le cas. 2: La même réponse que dans le numéro 1. Si vous n'utilisez plus la variable, alors ce serait bien comme ça.