Python的程序结构[5] -> 模块/Module[0] -> 内建模块 builtins

builtins 内建模块 / builtins Module


在Python的模块中,有一种特殊模块,无需导入便可以使用,其中包含了许多内建函数与类。

builtins 模块内容 / builtins Content


通过对 builtins 模块的导入(也可使用 __builtins__ 代替),可以利用 pdir 模块查看内部的函数与类及异常等。

pdir 模块是一个用于查看模块内部所有函数、类等信息的模块,安装方式为:

pip install pdir2

具体使用方式也十分简单,

1 import builtins
2 import pdir
3 # Or print(pdir(__builtins__))
4 print(pdir(builtins))

最终输出如下,可以看到 builtins 模块中包含了所有的内置变量或函数等。

module attribute:
    __loader__, __name__, __package__, __spec__
other:
    Ellipsis, False, None, NotImplemented, True, __debug__, copyright, credits, exit, help, license, quit
special attribute:
    __doc__
class:
    BaseException: Common base class for all exceptions
    GeneratorExit: Request that a generator exit.
    KeyboardInterrupt: Program interrupted by user.
    SystemExit: Request to exit from the interpreter.
    bool: bool(x) -> bool
    bytearray: bytearray(iterable_of_ints) -> bytearray
    bytes: bytes(iterable_of_ints) -> bytes
    classmethod: classmethod(function) -> method
    complex: complex(real[, imag]) -> complex number
    dict: dict() -> new empty dictionary
    enumerate: enumerate(iterable[, start]) -> iterator for index, value of iterable
    filter: filter(function or None, iterable) --> filter object
    float: float(x) -> floating point number
    frozenset: frozenset() -> empty frozenset object
    int: int(x=0) -> integer
    list: list() -> new empty list
    map: map(func, *iterables) --> map object
    memoryview: Create a new memoryview object which references the given object.
    object: The most base type
    property: property(fget=None, fset=None, fdel=None, doc=None) -> property attribute
    range: range(stop) -> range object
    reversed: reversed(sequence) -> reverse iterator over values of the sequence
    set: set() -> new empty set object
    slice: slice(stop)
    staticmethod: staticmethod(function) -> method
    str: str(object='') -> str
    super: super() -> same as super(__class__, <first argument>)
    tuple: tuple() -> empty tuple
    type: type(object_or_name, bases, dict)
    zip: zip(iter1 [,iter2 [...]]) --> zip object
exception:
    ArithmeticError: Base class for arithmetic errors.
    AssertionError: Assertion failed.
    AttributeError: Attribute not found.
    BlockingIOError: I/O operation would block.
    BrokenPipeError: Broken pipe.
    BufferError: Buffer error.
    BytesWarning: Base class for warnings about bytes and buffer related problems, mostly
    ChildProcessError: Child process error.
    ConnectionAbortedError: Connection aborted.
    ConnectionError: Connection error.
    ConnectionRefusedError: Connection refused.
    ConnectionResetError: Connection reset.
    DeprecationWarning: Base class for warnings about deprecated features.
    EOFError: Read beyond end of file.
    EnvironmentError: Base class for I/O related errors.
    Exception: Common base class for all non-exit exceptions.
    FileExistsError: File already exists.
    FileNotFoundError: File not found.
    FloatingPointError: Floating point operation failed.
    FutureWarning: Base class for warnings about constructs that will change semantically
    IOError: Base class for I/O related errors.
    ImportError: Import can't find module, or can't find name in module.
    ImportWarning: Base class for warnings about probable mistakes in module imports
    IndentationError: Improper indentation.
    IndexError: Sequence index out of range.
    InterruptedError: Interrupted by signal.
    IsADirectoryError: Operation doesn't work on directories.
    KeyError: Mapping key not found.
    LookupError: Base class for lookup errors.
    MemoryError: Out of memory.
    NameError: Name not found globally.
    NotADirectoryError: Operation only works on directories.
    NotImplementedError: Method or function hasn't been implemented yet.
    OSError: Base class for I/O related errors.
    OverflowError: Result too large to be represented.
    PendingDeprecationWarning: Base class for warnings about features which will be deprecated
    PermissionError: Not enough permissions.
    ProcessLookupError: Process not found.
    RecursionError: Recursion limit exceeded.
    ReferenceError: Weak ref proxy used after referent went away.
    ResourceWarning: Base class for warnings about resource usage.
    RuntimeError: Unspecified run-time error.
    RuntimeWarning: Base class for warnings about dubious runtime behavior.
    StopAsyncIteration: Signal the end from iterator.__anext__().
    StopIteration: Signal the end from iterator.__next__().
    SyntaxError: Invalid syntax.
    SyntaxWarning: Base class for warnings about dubious syntax.
    SystemError: Internal error in the Python interpreter.
    TabError: Improper mixture of spaces and tabs.
    TimeoutError: Timeout expired.
    TypeError: Inappropriate argument type.
    UnboundLocalError: Local name referenced but not bound to a value.
    UnicodeDecodeError: Unicode decoding error.
    UnicodeEncodeError: Unicode encoding error.
    UnicodeError: Unicode related error.
    UnicodeTranslateError: Unicode translation error.
    UnicodeWarning: Base class for warnings about Unicode related problems, mostly
    UserWarning: Base class for warnings generated by user code.
    ValueError: Inappropriate argument value (of correct type).
    Warning: Base class for warning categories.
    WindowsError: Base class for I/O related errors.
    ZeroDivisionError: Second argument to a division or modulo operation was zero.
function:
    __build_class__: __build_class__(func, name, *bases, metaclass=None, **kwds) -> class
    __import__: __import__(name, globals=None, locals=None, fromlist=(), level=0) -> module
    abs: Return the absolute value of the argument.
    all: Return True if bool(x) is True for all values x in the iterable.
    any: Return True if bool(x) is True for any x in the iterable.
    ascii: Return an ASCII-only representation of an object.
    bin: Return the binary representation of an integer.
    callable: Return whether the object is callable (i.e., some kind of function).
    chr: Return a Unicode string of one character with ordinal i; 0 <= i <= 0x10ffff.
    compile: Compile source into a code object that can be executed by exec() or eval().
    delattr: Deletes the named attribute from the given object.
    dir: dir([object]) -> list of strings
    divmod: Return the tuple (x//y, x%y).  Invariant: div*y + mod == x.
    eval: Evaluate the given source in the context of globals and locals.
    exec: Execute the given source in the context of globals and locals.
    format: Return value.__format__(format_spec)
    getattr: getattr(object, name[, default]) -> value
    globals: Return the dictionary containing the current scope's global variables.
    hasattr: Return whether the object has an attribute with the given name.
    hash: Return the hash value for the given object.
    hex: Return the hexadecimal representation of an integer.
    id: Return the identity of an object.
    input: Read a string from standard input.  The trailing newline is stripped.
    isinstance: Return whether an object is an instance of a class or of a subclass thereof.
    issubclass: Return whether 'cls' is a derived from another class or is the same class.
    iter: iter(iterable) -> iterator
    len: Return the number of items in a container.
    locals: Return a dictionary containing the current scope's local variables.
    max: max(iterable, *[, default=obj, key=func]) -> value
    min: min(iterable, *[, default=obj, key=func]) -> value
    next: next(iterator[, default])
    oct: Return the octal representation of an integer.
    open: Open file and return a stream.  Raise IOError upon failure.
    ord: Return the Unicode code point for a one-character string.
    pow: Equivalent to x**y (with two arguments) or x**y % z (with three arguments)
    print: print(value, ..., sep=' ', end='
', file=sys.stdout, flush=False)
    repr: Return the canonical string representation of the object.
    round: round(number[, ndigits]) -> number
    setattr: Sets the named attribute on the given object to the specified value.
    sorted: Return a new list containing all items from the iterable in ascending order.
    sum: Return the sum of a 'start' value (default: 0) plus an iterable of numbers
    vars: vars([object]) -> dictionary
View Code

builtins 的引用 / builtins Import


对于builtins模块一般使用 __builtins__ 进行引用,如果在 __main__ 模块内引用,则 __builtins__ 是对 builtins 模块的直接引用,而如果是在非 __main__ 模块中引用,则 __builtins__ 是对 builtins.__dict__ 的引用,而非本身,即返回的类型实质上是一个字典。

首先定义一个 Foo.py 文件,在文件中输入下面的代码

1 print('__builtins__ called not in __main__, type is:', type(__builtins__))

然后在另一个文件中将 Foo 导入,并同样对 __builtins__ 的引用进行查看,

1 import Foo
2 print('__builtins__ called in __main__, type is:', type(__builtins__))

最终的输出可以看到,在 Foo 中,__builtins__ 返回的是一个字典,而在当前模块中则返回的是 module,即 builtins 模块

__builtins__ called not in __main__, type is: <class 'dict'>
__builtins__ called in __main__, type is: <class 'module'>

Note: 这一特性在判断内置模块是否有某些函数的时候将会需要特别注意(常见于编写 Python2/3 都通用的代码时用于判断内置函数,如是否有 raw_input,从而对函数重新指向,使其通用于 Python2/3)。

参考链接


http://blog.sina.com.cn/s/blog_8a18c33d01019yek.html

原文地址:https://www.cnblogs.com/stacklike/p/8109425.html