代码之家  ›  专栏  ›  技术社区  ›  Mike Crittenden

有没有更干净或更有效的方法来完成这个Python任务?

  •  0
  • Mike Crittenden  · 技术社区  · 16 年前

    下面是我现在的代码:

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

    有没有更好的办法?我是Pythonic的新手,我想知道是否有一种更为Python的方式来表示“如果x是真的,那么某物等于这个,否则它等于那个。”

    谢谢

    4 回复  |  直到 16 年前
        1
  •  7
  •   Dingo    16 年前

    你能做到的 lang = lang and lang.get_name()

    如果郎是一无所有,它将永远是一无所有。否则,它将被设置为lang.get\u name()。

    不过,我不确定这种语法是否能让事情变得更清楚。

    P.S.代替 lang != None 你应该使用 not lang is None .

        2
  •  2
  •   Kevin Little    16 年前
    try:
        lang = window.get_active_document().get_language().get_name()
    except AttributeError:
        lang = None
    

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

        3
  •  2
  •   Sudhir Jonathan    16 年前

    尝试

    lang = lang.get_name() if lang else None
    
        4
  •  1
  •   Mark Tolonen    16 年前

    你的解决方案是好的,更清晰的大多数解决方案提供了迄今为止。稍微更像蟒蛇的是:

    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()
    
    推荐文章