在Python编译器启动时自动导入Python中的默认模块是什么?
例如,这些是print添加和其他数学函数.
它们必须在Python中的某处定义
我猜想我们可以通过查找来获取这些信息(例如print,如果我们知道这些信息,我们可以获得它来自哪个模块的函数来自哪里).
agf*_*agf 10
"module"在Python中具有特殊含义."打印"和"添加"都不是模块.
+和其他的"数学函数"的运营商,同时for,in,if等都是关键词,而不是功能,所以不打算在__builtins__.
如果您确实想知道启动Python时加载了哪些模块,请查看sys.modules.keys():
$ python -i
Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.modules.keys()
['copy_reg', 'sre_compile', 'locale', '_sre', 'functools', 'encodings', 'site',
'__builtin__', 'sysconfig', 'operator', '__main__', 'types', 'encodings.encodings',
'abc', '_weakrefset', 'errno', 'encodings.codecs', 'sre_constants', 're', '_abcoll',
'ntpath', '_codecs', 'nt', '_warnings', 'genericpath', 'stat', 'zipimport',
'encodings.__builtin__', 'warnings', 'UserDict', 'encodings.cp1252', 'sys',
'codecs', 'os.path', '_functools', '_locale', 'signal', 'traceback', 'linecache',
'encodings.aliases', 'exceptions', 'sre_parse', 'os', '_weakref']
Run Code Online (Sandbox Code Playgroud)
所有这些功能都是模块的一部分__builtins__.启动python shell并查看帮助 -
>>> help(__builtins__)
Run Code Online (Sandbox Code Playgroud)
Python 具有三个作用域:
如果您正在执行以下函数:
def foo():
print('bar')
Run Code Online (Sandbox Code Playgroud)
printPython在这些作用域中从上到下查找函数。foo首先它检查named中是否有局部变量print。然后,如果失败,则 ifprint是全局脚本/模块对象(在本示例中foo函数就是这样的对象)。如果也失败,它会在__builtin__模块中查找。
模块__builtin__是print定义所有类似功能的地方。它还包含内置异常类。
加法和其他运算符是不同的,因为它们作用于对象。每个对象都有一个类型,例如整数的123类型是int。该int类型定义了两个整数如何相加以及结果是什么。
在CPython(Python from python.org)中,__builtin__模块和所有基本类型(int、str、list等)都是用 C 编写的,并且是核心(python可执行文件)的一部分。还有其他模块以相同的方式编写,最值得注意的是sys模块。sys.py您在 Python 的标准库中找不到。