代码之家  ›  专栏  ›  技术社区  ›  Ian Mackinnon

解包单值元组的可读约定

  •  9
  • Ian Mackinnon  · 技术社区  · 14 年前

    有一些 related questions 关于解包单值元组,但是我想知道在共享和维护代码的可读性方面是否有一个首选的方法。我发现,当同事们涉及到一个长的函数链(如ORM查询)时,这些问题会导致他们产生混淆或误解。

    有没有类似的惯例 pep8 指南?如果不是,哪种方法最清晰,最易读?

    下面是我尝试的方法,以及我对它们的想法。

    两种常见的方法,整洁但容易遗漏:

    value, = long().chained().expression().that().returns().tuple()
    
    value = long().chained().expression().that().returns().tuple()[0]
    

    函数将是显式的,但不是标准的:

    value = unpack_tuple(long().chained().expression().that().returns().tuple())
    

    也许评论总是最清楚的?

    # unpack single-value tuple
    value, = long().chained().expression().that().returns().tuple()
    
    1 回复  |  直到 14 年前
        1
  •  22
  •   Manoj Govindan    14 年前

    如何使用显式括号来表示您正在解包一个元组?

    (value, ) = long().chained().expression().that().returns().tuple()
    

    毕竟 explicit is better than implicit .