2017-02-04 50 views
0

使用tinydb我有這樣的數據庫操作的對象:使用print()調用if語句/調用函數中的調用函數 - 良好實踐?

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

的方法「插入」從tinydb返回條目的ID被插入後,見#1。所以我用這個效果返回成功/失敗的消息,可顯示當函數調用印刷():

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

問題1:

if self.db.insert(kwargs): 

是不是'好的做法'在if語句的條件語句中執行insert函數?如果沒有,那麼根據返回值來創建一個if/else語句有哪些選擇?

問題2:

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

插入文件到數據庫的整個過程被包裹在一個打印語句能夠訪問插入函數的返回值。 這是'好習慣'還是有更好的方法來調用插入函數,訪問返回值並打印出來?

在此先感謝您的澄清!

回答

1

可能很難說什麼是'好的做法',因爲人們對他們是什麼常常有不同的看法。

1:您沒有在其他地方使用返回的值,所以只有在條件語句中才有它。如果insert方法引發了一些異常,您將不得不處理該異常,但似乎沒有。

2:與第1號相同的答案。如果您不再使用該變量,那麼它會很好。