python中通过模块名引用子模块机制
来源:互联网 发布:怎么修改淘宝收获地址 编辑:程序博客网 时间:2024/06/05 17:53
type(os)--><type 'module'>,os本身的类别为模块,type(os.path)--><type 'module'>,os.path也为模块,说明python可以通过'模块.模块'的格式来引用模块。
以os.path为例,来说明一下这种结构的机制。
1.import module是可以将被引用模块中的所有对象以及__all__列表中所有对象加载到当前模块中来
2.from module import * 是根据__all__列表来加载模块,如果没有定义__all__列表,则以‘_’开头的对象是不会被引用的。
os模块初始化时__all__列表:
__all__ = ["altsep", "curdir", "pardir", "sep", "extsep", "pathsep", "linesep",
"defpath", "name", "path", "devnull",
"SEEK_SET", "SEEK_CUR", "SEEK_END"]
当执行 import os时,以linux环境为场景:
if 'posix' in _names:
name = 'posix'
linesep = '\n'
from posix import *
try:
from posix import _exit
except ImportError:
pass
import posixpath as path
import posix
__all__.extend(_get_exports_list(posix))
del posix
‘import posixpath as path’ ,可以看出os.path模块对应的实际模块名称为posixpath ,那么python解释器如何通过os.path找到实际模块呢?sys.modules['os.path'] = path,这句将os.path对应模块添加到sys.modules字典中。 __all__.extend(_get_exports_list(posix))将posix中所有的对象都添加到os当前的__all__列表中,os模块对应的py文件中有renames方法,没有rename方法,为什么可以使用os.rename呢?就是posix模块中rename方法被添加到os的模块列表中了。可以通过dir(posix)发现posix模块中确实有rename方法。
- python中通过模块名引用子模块机制
- Lua模块与子模块
- 【python 图像处理】Python图像处理模块pillow子模块Image用法精要
- mvn导入多模块项目的时候子模块不能合并到父模块中
- Git使用子模块引用外部项目
- 子模块
- Lua:访问模块、创建模块、子模块与包
- fpga-第一次在同一个文件中写两个module模块,其中上面一个模块是作为子模块
- sakai项目中chat子模块解读
- Python中引用自定义模块
- Python中引用自定义模块
- Python中引用自定义模块
- python动态加载子模块 根据字符串绑定子模块 如加载os.path
- 汇编——多模块程序设计(子模块)
- Eclipse maven 导入父模块和子模块
- Pexpect模块的pxssh扩展子模块详解
- maven模块的子模块受损-恢复方案
- ReactiveCocoa环境集成(含Xcode8)(包含通过子模块)
- ubuntu 配置shadowsocks
- oracle 创建数据库 在新创建的数据库中创建用户 删除创建数据库 链接orcl
- Android JNI知识简介
- 【UOJ #209】【UER #6】票数统计
- 《Linux内核设计与实现》笔记——VFS
- python中通过模块名引用子模块机制
- epoll如何判断客户端不可读
- Ajax前台返回JSON数据后再Controller中直接转换成类型使用,后台接收json转成实体的方法
- java建造者模式(Builder)-创建型
- [2]AMQP(高级消息队列协议) ----QPID不得不说的事
- 第4章 并行数据加载
- android---------ArrayAdapter、SimpleAdapter和BaseAdapter
- springmvc中的处理模型数据
- Centos7上Mesos和Marathon的安装