我有一个怪异的复杂数学公式,为了更好地理解,我缩进如下:
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中执行它而不会产生缩进错误?
答案 0 :(得分:4)
根据PEP-8的首选方法是将整个内容包装在方括号中。
包裹长行的首选方法是使用Python隐含的 括号,方括号和大括号内的行连续。排长龙 可以通过将表达式包装在 括号。应该优先使用这些而不是使用反斜杠 行继续。
反斜杠有时仍然合适。例如长 多个with语句不能使用隐式连续,所以 反斜杠是可以接受的:
此外,您不能使用大括号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) \
) \
)