如果可能,我希望这个条件很短,我不希望每次都or
if not wall.twitter_access_token or not wall.twitter_access_token_secret or not wall.auth_user:
raise Exception("Cannot open without verify with twitter account")
答案 0 :(得分:4)
if not wall.twitter_access_token or not wall.twitter_access_token_secret or not wall.auth_user:
可以等效地编写为使用De Morgan's Law
if not(wall.twitter_access_token and wall.twitter_access_token_secret and wall.auth_user)
甚至更好地使用内置的all
if not all([wall.twitter_access_token,
wall.twitter_access_token_secret,
wall.auth_user]):
此外,考虑到when not all are true
这一事实,最后一个表达式更具可读性。
然而,如果你多次重复这个表达式,采用DRY原则并将其重构为函数。
答案 1 :(得分:2)
执行此操作的最佳方法是使用.all()功能。你的代码就像:
if not all([
wall.twitter_access_token,
wall.twitter_access_token_secret,
wall.auth_user,
]):
注意:最好将每个列表元素放入新行。它更具可读性,您可以只注释该行以跳过一个条件(在调试时很有用)。