gpt4 book ai didi

拆分数学计算的 Pythonic 方法

转载 作者:太空狗 更新时间:2023-10-29 22:26:36 24 4
gpt4 key购买 nike

我使用 ninja-ide,我发现它可以提示所有事情(到处都是黄色底文本行)的方式令人惊讶,因为我认为这是一种改进我的编码以使其更标准的方法。

但是,由于它确实也提示代码行的长度(这当然很有意义,因为没有人喜欢水平滚动来阅读代码),我陷入了这个问题。

假设这一行:

 v1, v2 = np.sum(((b1 - m1) ** 2) * p1) / q1, np.sum(((b2 - m2) ** 2) * p2) / q2

它确实有 81 个字符,包括空格,在这种情况下我可以这样拆分它:

    v1 = np.sum(((b1 - m1) ** 2) * p1) / q1
v2 = np.sum(((b2 - m2) ** 2) * p2) / q2

但这并没有多少pythonic的感觉,还有另外一个问题:

如果没有逗号呢?我的意思是我怎么能像这样拆分:

   v2 = np.sum(((b1 - m1) ** 2 * np.sum(((b2 - np.sum(((b2 - m2) ** 2) * p2) / q2) ** 2) * p2) / q2) * p1) 

以上内容在数学上没有任何意义,只是为了解释我的意思。

最佳答案

反斜杠可以用来分割长行。

你在哪里拆分取决于你,但上面的行可以这样修改:

v2 = np.sum(((b1 - m1) ** 2 * \
np.sum(((b2 - np.sum(((b2 - m2) ** 2) * p2) / q2) ** 2) * p2) \
/ q2) * p1)

我会首先尝试以其他方式减少代码(例如,重命名变量、使用其他模块、改变操作顺序)。


@user2357112 正确地指出,在不匹配的圆括号、方括号或大括号内拆分代码时不需要反斜杠,因此上面的代码也可以如下所示:

v2 = np.sum(((b1 - m1) ** 2 *
np.sum(((b2 - np.sum(((b2 - m2) ** 2) * p2) / q2) ** 2) * p2)
/ q2) * p1)

来自 PEP 8's Maximum Line Length :

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.

关于拆分数学计算的 Pythonic 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20367404/

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