优化python if语句

时间:2016-06-04 16:59:11

标签: python python-3.x

撰写此声明的更多pythonic方法是什么?

if soup.find(title="Email"):
    profile['email'] = soup.find(title="Email").a.string

我想避免的是重复soup.find(title="Email")

2 个答案:

答案 0 :(得分:3)

我不知道这是否更像是pythonic。我用我使用的大多数语言来做这件事。 在我的头顶,这样的事情应该避免重复。

soupByEmail = soup.find(title="Email")
if soupByEmail:
    profile['email'] = soupByEmail.a.string

答案 1 :(得分:0)

这不是pythonic的问题,更多的是编码风格。作为一种优雅的替代方案,您使用EAFP principle(比请求更容易请求宽恕)并使用try-except表达式包裹您的代码段:

try:
    profile['email'] = soup.find(title="Email").a.string
except Exception as exp:
    # do what you want with exp

此方法的另一个优点是您可以在异常块中记录问题,供以后使用,或者在stdout中打印。