【问题标题】:Avoiding long lines of code in Python避免 Python 中的长行代码
【发布时间】:2013-02-28 16:41:22
【问题描述】:

我尝试将我的代码保持在 80 个字符以内,以便在我设置的标准窗口中并排查看。在这样做时,我有一个这样的 Python v2.7 构造:

subseq_id_to_intervals_dict, subseq_id_to_ccid_formats_dict, subseq_id_to_min_max_count_dict = map_cases(opts,
                                            format_to_ccid_funcs,
                                            sys.stdin)

所以我就这样分手了:

subseq_id_to_intervals_dict,
subseq_id_to_ccid_formats_dict,
subseq_id_to_min_max_count_dict = map_cases(opts,
                                            format_to_ccid_funcs,
                                            sys.stdin)

但这会导致错误

NameError: name 'subseq_id_to_intervals_dict' 未定义

直到我添加了反斜杠:

subseq_id_to_intervals_dict,        \
subseq_id_to_ccid_formats_dict,     \
subseq_id_to_min_max_count_dict = map_cases(opts,
                                            format_to_ccid_funcs,
                                            sys.stdin)

为什么行尾的逗号不能充分告知 Python 以理解语法并且不会出错?有没有更简洁的方法来做到这一点而无需反斜杠?

【问题讨论】:

  • 根据 PEP8 的首选方法是添加括号并使用隐含的续行。
  • 不要忘记foo, 是一个完整的语句(它是一个包含单个元素的元组)。您可以像@DavidRobinson 建议的那样在 LHS 周围加上括号。出于这个原因,如果 Python 允许您以这种方式使用逗号分割一行,那么 Python 会变得模棱两可(您的意思是 1 元素元组还是我应该处理更多?)

标签: python python-2.7 newline backslash


【解决方案1】:

您可以将作业的左侧放在括号中:

(subseq_id_to_intervals_dict,
 subseq_id_to_ccid_formats_dict,
 subseq_id_to_min_max_count_dict) = map_cases(opts,
                                            format_to_ccid_funcs,
                                            sys.stdin)

左边已经是一个元组 - 括号只是暗示行继续。线

subseq_id_to_intervals_dict,

并不意味着续行,因为它是一个完整的语句——它是一个包含单个元素的元组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-07
    • 2013-02-25
    相关资源
    最近更新 更多