函数中 Python 多行字符串的正确缩进是什么?
def method(): string = """line one line two line three"""
要么
或者是其他东西?
在第一个示例中,将字符串挂在函数之外看起来有点奇怪。
您可能想与"""
"""
def foo(): string = """line one line two line three"""
由于换行符和空格包含在字符串本身中,因此您必须对其进行后处理。如果您不想这样做并且您有大量文本,您可能希望将其单独存储在文本文件中。如果文本文件不适用于您的应用程序并且您不想进行后处理,我可能会选择
def foo(): string = ("this is an " "implicitly joined " "string")
如果要对多行字符串进行后处理以删除不需要的部分,则应考虑PEP 257textwrap中提供的用于后处理文档字符串的模块或技术:
textwrap
def trim(docstring): if not docstring: return '' # Convert tabs to spaces (following the normal Python rules) # and split into a list of lines: lines = docstring.expandtabs().splitlines() # Determine minimum indentation (first line doesn't count): indent = sys.maxint for line in lines[1:]: stripped = line.lstrip() if stripped: indent = min(indent, len(line) - len(stripped)) # Remove indentation (first line is special): trimmed = [lines[0].strip()] if indent < sys.maxint: for line in lines[1:]: trimmed.append(line[indent:].rstrip()) # Strip off trailing and leading blank lines: while trimmed and not trimmed[-1]: trimmed.pop() while trimmed and not trimmed[0]: trimmed.pop(0) # Return a single string: return '\n'.join(trimmed)