Python 2.7 Python:这些代码做什么&引用;模块=类型(系统)";
我在某处看到了一些用于配置的python代码,但我无法理解 代码如下:Python 2.7 Python:这些代码做什么&引用;模块=类型(系统)";,python-2.7,Python 2.7,我在某处看到了一些用于配置的python代码,但我无法理解 代码如下: import sys, os.path Module = type(sys) # What does this line for? modules = {} print dir(Module) def load(fullpath, env={}, module=Module): try: code = open(fullpath).read() except IOError:
import sys, os.path
Module = type(sys) # What does this line for?
modules = {}
print dir(Module)
def load(fullpath, env={}, module=Module):
try:
code = open(fullpath).read()
except IOError:
raise ImportError, 'No module named %s' % fullpath
filename = os.path.basename(fullpath)
try:
return modules[filename]
except KeyError:
pass
####################################
#### Most confused
m = module(filename)
m.__module_class__ = module
m.__file__ = fullpath
m.__dict__.update(env)
exec compile(code, filename, 'exec') in m.__dict__
####################################
modules[filename] = m
return m
def unload(m):
filename = os.path.basename(m.__file__)
del modules[filename]
return None
def reload(m):
fullpath = m.__file__
try:
code = open(fullpath).read()
except IOError:
raise ImportError, 'No module named %s' % fullpath
env = m.__dict__
module_class = m.__module_class__
filename = os.path.basename(fullpath)
m = module_class(filename)
m.__file__ = fullpath
m.__dict__.update(env)
m.__module_class__ = module_class
exec compile(code, filename, 'exec') in m.__dict__
modules[filename] = m
return m
在行上方的代码中:
Module = type(sys)
创建module类型的变量。您可以打开解释器并键入以下代码:
import sys
Module = type(sys)
help(Module)
您将看到以下内容:
模块内置中有关类模块的帮助:
类模块(对象)
|模块(名称[,文档])
||创建模块对象。 |名称必须是字符串;可选的doc参数可以有任何类型。 |
|此处定义的方法: |
|delattr(…) |x.delattr('name')del x.name |
|getattribute(…) |x.getattribute('name')x.name |
|init(…) |x.init(…)初始化x;有关签名,请参见帮助(键入(x)) |
|repr(…) |x.repr()repr(x) 加载方法(您最困惑的地方)基本上是,将文件添加到模块m中,然后在这些模块中编译代码 我不知道您试图通过使用此代码来实现什么,但是有更简单的方法来动态加载模块。例如: