我正在創建一個get_user()函數,用於從數據庫中檢索用戶記錄。唯一的一點是,我想允許它被調用的方式具有一定的靈活性,並允許它們調用函數:只考慮一個kwarg
get_user(username =「testuser」)或get_user(email =「[email protected] 「)或GET_USER(UID = 7)
我首先想到的是定義功能:
def get_user(**kwargs):
c, conn = connection(dict_cursor = True)
keyword = None # key that's passed in i.e username, email, etc.
data = c.execute("SELECT * FROM users where %s = %s",[escape_string(keyword), escape_string(kwargs[keyword]),])
data = c.fetchone()
conn.close()
return data
我的問題是,我怎麼能得到一個(和assumably是唯一的)的關鍵字沒有冗長一系列其他的if語句?
我可以通過kwargs進行迭代,創建一個鍵列表,並且只顯示列表中的0索引,但是這似乎是一種非常冒險的方式。是否有一個更pythonic方式期待一個關鍵字參數,並採取它沒有去參數和使用像getuser(「電子郵件」,testacct @ gmail.com「)?
那爲什麼把它當作'kwarg'呢?只要有'def get_user(parameter_name,parameter_value):'然後像'如果parameter_name不在list_of_parameters:'然後拋出一些異常 –
@PatrickHaugh - 進一步的想法,我想這沒什麼錯。 –