gpt4 book ai didi

python - 带属性链的换行

转载 作者:行者123 更新时间:2023-11-28 22:27:17 26 4
gpt4 key购买 nike

我通常按照 PEP8 中的建议使用括号将长行括起来:

The preferred way of wrapping long lines is by using Python's implied line continuation inside parentheses, brackets and braces. Long lines can be broken over multiple lines by wrapping expressions in parentheses. These should be used in preference to using a backslash for line continuation.

但是对于像这样的长线,我不确定推荐的方式是什么:

my_object = my_toolbox_with_a_pretty_long_name.some_subset_with_a_pretty_long_name_too.here_is_what_i_was_looking_for

关键是=后面的部分还是太长了,不知道在哪里/怎么剪。

1 - 展开成几行

我经常这样做

toolbox = my_toolbox_with_a_pretty_long_name
subset = toolbox.some_subset_with_a_pretty_long_name_too
my_object = subset.here_is_what_i_was_looking_for

但它有点不同,因为它创建了中间变量,尽管在功能上它是等价的。另外,如果该行处于多重条件下,我真的不能这样做,比如 if a is not None and len(my_toolbox_..._for) == 42

2 - 使用括号

这也有效:

my_object = (
my_toolbox_with_a_pretty_long_name
).some_subset_with_a_pretty_long_name_too.here_is_what_i_was_looking_for

my_object = ((my_toolbox_with_a_pretty_long_name
).some_subset_with_a_pretty_long_name_too
).here_is_what_i_was_looking_for

但它在可读性方面非常糟糕,并且建议这样做以避免 85-ish 字符行让我看起来像一个 PEP8 纳粹分子。而且我什至不能让后者同时取悦 pylint 和 flake8。

最佳答案

你只需要一对括号:

my_object = (my_toolbox_with_a_pretty_long_name
.some_subset_with_a_pretty_long_name_too
.here_is_what_i_was_looking_for)

换行符在括号表达式中并不重要,它们可以出现在任何允许空格的地方。

对于你的另一个例子:

   if (a is not None 
and len(my_toolbox_with_a_pretty_long_name
.some_subset_with_a_pretty_long_name_too
.here_is_what_i_was_looking_for) == 42):

关于python - 带属性链的换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44131168/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com