我正在创建一个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 - 进一步的想法,我想这没什么错。 –