在简单的数学方程式中使python忽略缩进,该数学方程式使用缩进在多行上

时间:2019-08-02 20:35:34

标签: python

我有一个怪异的复杂数学公式,为了更好地理解,我缩进如下:

cdef inline Vec3 vadd(Vec3* a, Vec3* b) nogil:
    cdef Vec3 out
    out.x = a.x + b.x
    out.y = a.y + b.y
    out.z = a.z + b.z
    return out

cdef inline void vadd(Vec3* a, Vec3* b, Vec3* out) nogil:
    out.x = a.x + b.x
    out.y = a.y + b.y
    out.z = a.z + b.z

然后我运行它只是意识到它导致了意外的缩进。我该如何保留这些缩进以更好地理解方程式,并且仍然在python中执行它而不会产生缩进错误?

2 个答案:

答案 0 :(得分:4)

根据PEP-8的首选方法是将整个内容包装在方括号中。

  

包裹长行的首选方法是使用Python隐含的   括号,方括号和大括号内的行连续。排长龙   可以通过将表达式包装在   括号。应该优先使用这些而不是使用反斜杠   行继续。

     

反斜杠有时仍然合适。例如长   多个with语句不能使用隐式连续,所以   反斜杠是可以接受的:

source

此外,您不能使用大括号internal/platform/store/store_test.go:33:15: cannot use &b (type *bytes.Buffer) as type io.WriterAt in argument to Write: *bytes.Buffer does not implement io.WriterAt (missing WriteAt method) internal/platform/store/store_test.go:40:15: cannot use &b (type *bytes.Buffer) as type io.WriterAt in argument to Write: *bytes.Buffer does not implement io.WriterAt (missing WriteAt method) 作为括号。请使用方括号{}

()

答案 1 :(得分:2)

只需在行尾添加\

EIET = IET \
       + (TLBHR * {(1-PFR) * (TLBT + MAT) \
                   + PFR   * (TLBT + MAT + PFT) \
                  } \
         ) \
       + (TLBMR * {(1-PFR) * (TLBT + MAT * (NPT + 1)) \
                   + PFR   * (TLBT + MAT * (NPT + 1) + PFT) \
                  } \
         )

PS:您无法在python的数学运算中使用{,只需将它们更改为()即可:

EIET = IET \
       + (TLBHR * ((1-PFR) * (TLBT + MAT) \
                   + PFR   * (TLBT + MAT + PFT) \
                  ) \
         ) \
       + (TLBMR * ((1-PFR) * (TLBT + MAT * (NPT + 1)) \
                   + PFR   * (TLBT + MAT * (NPT + 1) + PFT) \
                  ) \
         )