有没有更干净或更高效的Python任务?

时间:2010-02-17 16:41:42

标签: python variable-assignment

这是我现在的代码:

lang = window.get_active_document().get_language()
if lang != None:
    lang = lang.get_name()

有没有更好的方法呢?我是Pythonic的新手,并且想知道是否有更多Python方式可以说“如果x为真,则某些东西等于此,否则它等于那个。”

感谢。

4 个答案:

答案 0 :(得分:7)

您可以lang = lang and lang.get_name()代替'if'语句。

如果lang为None,它将保持None。如果没有,它将被设置为lang.get_name()。

我不确定这种语法是否会让事情变得更加清晰。

P.S。您应该使用lang != None而不是not lang is None

答案 1 :(得分:2)

尝试

lang = lang.get_name() if lang else None

答案 2 :(得分:2)

try:
    lang = window.get_active_document().get_language().get_name()
except AttributeError:
    lang = None

这里的优点是窗口本身和所有三个嵌套方法都在一个语句中得到保护。

答案 3 :(得分:1)

到目前为止,您提供的解决方案很好,更清晰。稍微多一点pythonic将是:

lang = window.get_active_document().get_language()
if lang:
    lang = lang.get_name()

lang = window.get_active_document().get_language()
if lang is not None:
    lang = lang.get_name()