在Python 2.7.4的软件包中,当你转到Lib -> email -> errors.py
时,模块中有一些有趣的东西。
# Copyright (C) 2001-2006 Python Software Foundation
# Author: Barry Warsaw
# Contact: email-sig@python.org
"""email package exception classes."""
class MessageError(Exception):
"""Base class for errors in the email package."""
class MessageParseError(MessageError):
"""Base class for message parsing errors."""
class HeaderParseError(MessageParseError):
"""Error while parsing headers."""
class BoundaryError(MessageParseError):
"""Couldn't find terminating boundary."""
class MultipartConversionError(MessageError, TypeError):
"""Conversion to a multipart is prohibited."""
class CharsetError(MessageError):
"""An illegal charset was given."""
# These are parsing defects which the parser was able to work around.
class MessageDefect:
"""Base class for a message defect."""
def __init__(self, line=None):
self.line = line
class NoBoundaryInMultipartDefect(MessageDefect):
"""A message claimed to be a multipart but had no boundary parameter."""
class StartBoundaryNotFoundDefect(MessageDefect):
"""The claimed start boundary was never found."""
class FirstHeaderLineIsContinuationDefect(MessageDefect):
"""A message had a continuation line as its first header line."""
class MisplacedEnvelopeHeaderDefect(MessageDefect):
"""A 'Unix-from' header was found in the middle of a header block."""
class MalformedHeaderDefect(MessageDefect):
"""Found a header that was missing a colon, or was otherwise malformed."""
class MultipartInvariantViolationDefect(MessageDefect):
"""A message claimed to be a multipart but no subparts were found."""
这是模块的全部内容。除此之外,还有2个非常奇怪的字符在预览中没有显示,并且无法复制粘贴。 它们看起来像人类的棒子(在记事本中),我发现它非常有趣。
其中一个就在
之前class MessageError(Exception):
"""Base class for errors in the email package."""
另一个是在
之后class CharsetError(MessageError):
"""An illegal charset was given."""
有没有人知道这些角色在那里做什么?或者只是我的包裹?
答案 0 :(得分:5)
在Vim中打开此文件会显示^L
个字符,a.k.a form feed。
如果您参考PEP8 style guide,您会找到:
Python接受control-L(即
^L
)换页符作为空格; 许多工具会将这些字符视为页面分隔符,因此您可以使用它们来分隔文件相关部分的页面。请注意,某些编辑器和基于Web的代码查看器可能无法将control-L识别为换页符,并且会在其位置显示另一个字形。
在您的情况下,这些^L
只是在逻辑上将MessageError
派生类与MessageDefect
派生类分开。
答案 1 :(得分:1)
他们也在我的版本的包中。用二进制编辑器打开文件我看到了
0D 0A 0D 0A 0D 0A 0C 0D 0A
所有这些0D 0A
对都是回车/换行(Windows行结尾)。 0C
是换页符,因此在打印模块时,您可以将每个部分放在单独的页面上。你的Python解析器应该忽略它们。