gpt4 book ai didi

python - 使用条件语句 (IF/ELIF/ELSE) 使代码更简洁、更短

转载 作者:行者123 更新时间:2023-12-01 04:10:25 27 4
gpt4 key购买 nike

目标:使用 IF/ELIF/ELSE 条件减少 (Python)retrieve_method 的冗长。

对象表的结构和方法:这个特定的retrieve_method根据构成数据库中用户表的元素调用用户对象(例如用户名名字姓氏电子邮件等)

到目前为止,我的代码正在运行,但是它可以使用一些更干净、更整洁的代码。我不确定是否应该使用 keywords 还是 *args。我仍在学习 Python,因此任何信息丰富的建议将不胜感激。 (您会注意到,我现在使用抽象词 something_unique 来将输入与表中找到的元素进行比较。如果两者匹配,该方法将返回匹配的项目。)

我该如何改进?最好的方法是什么?优点?缺点?

软件:Python 2.7.9、SQLAlchemy 1.0.9

<小时/>

代码:

def retrieve_user(self, something_unique):
if isinstance(something_unique, int):
print 'retrieve_user_id: ', something_unique # added
return self.session.query(User).\
filter(User.id == something_unique).one()
elif isinstance(something_unique, basestring):
print 'retrieve_user: ', something_unique # added
return self.session.query(User).\
filter(func.lower(User.username) == func.lower(something_unique)).first()
elif isinstance(something_unique, basestring):
print 'retrieve_user email', something_unique
return self.session.query(User).\
filter(func.lower(User.email) == func.lower(something_unique)).first()
elif isinstance(something_unique, User):
return something_unique
else:
raise ValueError('Value being passed is an object')

最佳答案

一种方法是使用关键字参数:

def retrieve_user(self, id=None, name=None, email=None):
if id:
return self.session.query(User).\
filter(User.id == id).one()
if name:
return self.session.query(User).\
filter(func.lower(User.username) == func.lower(name)).first()
etc

关于python - 使用条件语句 (IF/ELIF/ELSE) 使代码更简洁、更短,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35018068/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com