假设你在python中有一个if语句:
if not "string1" in item and not "string2" in item and not "string3" in item and not "string4" in item:
doSomething(item)
有没有办法将if语句分解为多行?像这样:
if not "string1" in item
and not "string2" in item
and not "string3 in item
and not "string4" in item:
doSomething(item)
这可能吗?是否有一种不同的,更加“pythonic”的方式使它更具可读性?
答案 0 :(得分:6)
通常,当您想要将表达式拆分为多行时,请使用括号:
if (not "string1" in item
and not "string2" in item
and not "string3" in item
and not "string4" in item):
doSomething(item)
此建议直接来自Python's style guide (PEP 8):
包装长行的首选方法是在括号,括号和括号内使用Python隐含的行继续。通过在括号中包装表达式,可以在多行中分解长行。
但请注意,在这种情况下,您有更好的选择:
if not any(s in item for s in ("string1", "string2", "string3", "string4")):
doSomething(item)
答案 1 :(得分:2)
是的,只需在换行符之前添加一个反斜杠:
if not "string1" in item \
and not "string2" in item \
and not "string3 in item \
and not "string4" in item:
doSomething(item)
答案 2 :(得分:2)
反斜杠非常难看。如果您不再需要换行符,则必须删除反斜杠,而如果您放置括号则无需更改。
此外,在这种情况下,您可能需要考虑:
if not ("string1" in item
or "string2" in item
or "string3" in item
or "string4" in item):
doSomething(item)
答案 3 :(得分:1)
只需将语句的所有条件放在括号内。
答案 4 :(得分:1)
您可以使用\
来逃避该行的结尾。例如:
$ cat foo.py
#!/usr/bin/env python
def doSomething(item):
print item
item = "stringX"
if not "string1" in item \
and not "string2" in item \
and not "string3" in \
item and not "string4" in item:
doSomething(item)
$ ./foo.py
stringX
答案 5 :(得分:0)
item = "hello"
if not "string1" in item \
and not "string2" in item \
and not "string3" in item \
and not "string4" in item:
print(item)
输出:你好
是的,反斜杠可以胜任。
此外,您的代码在string3之后缺少一个"
。