__import__简介
2015-08-31 15:33
351 查看
__import__()
import 语句通过调用__import__()来完成工作,提供这个函数是为了让有特殊需要的用户覆盖他,实现自定义。__import__最大的好处就是可以使程序在runtime时动态加载一些模块,而不是在py文件的开头使用import来加载。
官方文档如下
__import__(name[,globals[, locals[,fromlist[, level]]]])
Note
这个函数导入模块name;globals, locals 默认为globals(), locals();formlist给定了要导入的对象或者子模块的名字。level参数决定是使用相对路径还是绝对路径导入,默认值为-1,代表绝对和相对路径都可以。0值意味着仅仅接收绝对路径导入,正值代表对于调用__import__()的模块目录的父目录的数目。Positive values forlevel indicate the number of parent directories to search relative to the directory of the module calling__import__().
当name变量是package.module形式的时候,正常情况下仅仅顶层的包(第一个 . 前面的package)会被返回,而不是package.module。然而当fromlist参数非空时,模块package.module被返回。
可以看下面的例子:
spam = __import__('spam', glocals(), locals())
名字为 spam 的模块被导入;
spam = __import__('spam.ham', globals(), locals(), [])
这里仍然导入的是 spam 模块,而不是 spam.ham;
如果想要导入spam.ham那么就需要制定后面的fromlist参数:
相当于;from spam.ham import eggs, sausage as saus
注意:这里__import__导入的不是spam.ham.eggs 和 spam.ham.sausage, 而是spam.ham, 必须经过后面两条赋值语句才可以等效于上面这种正常导入。
Changed in version 2.5: The level parameter was added.
Changed in version 2.5: Keyword support for parameters was added.
参考: <http://blog.csdn.net/wanghai__/article/details/6924352>
import 语句通过调用__import__()来完成工作,提供这个函数是为了让有特殊需要的用户覆盖他,实现自定义。__import__最大的好处就是可以使程序在runtime时动态加载一些模块,而不是在py文件的开头使用import来加载。
官方文档如下
__import__(name[,globals[, locals[,fromlist[, level]]]])
Note
这个函数导入模块name;globals, locals 默认为globals(), locals();formlist给定了要导入的对象或者子模块的名字。level参数决定是使用相对路径还是绝对路径导入,默认值为-1,代表绝对和相对路径都可以。0值意味着仅仅接收绝对路径导入,正值代表对于调用__import__()的模块目录的父目录的数目。Positive values forlevel indicate the number of parent directories to search relative to the directory of the module calling__import__().
当name变量是package.module形式的时候,正常情况下仅仅顶层的包(第一个 . 前面的package)会被返回,而不是package.module。然而当fromlist参数非空时,模块package.module被返回。
可以看下面的例子:
spam = __import__('spam', glocals(), locals())
名字为 spam 的模块被导入;
spam = __import__('spam.ham', globals(), locals(), [])
这里仍然导入的是 spam 模块,而不是 spam.ham;
如果想要导入spam.ham那么就需要制定后面的fromlist参数:
_temp = __import__('spam.ham', globals(), locals(), ['eggs', 'sausage'], -1) eggs = _temp.eggs saus = _temp.sausage
相当于;from spam.ham import eggs, sausage as saus
注意:这里__import__导入的不是spam.ham.eggs 和 spam.ham.sausage, 而是spam.ham, 必须经过后面两条赋值语句才可以等效于上面这种正常导入。
Changed in version 2.5: The level parameter was added.
Changed in version 2.5: Keyword support for parameters was added.
参考: <http://blog.csdn.net/wanghai__/article/details/6924352>
相关文章推荐
- OCV与CPPR模式的理解
- Linux内核构成
- Rails Javascript 只在需要的页面中加载
- HDU1009 - FatMouse' Trade (贪心)
- VC6 go to definition不好用解决方法
- 对于linux-c编译调试信息的部分理解.
- 用Eclipse开发JSF时,是标签出现自动提醒
- Redis info参数总结(转)
- dom4j 读取xml
- IOS第15天(2,事件处理hitTest练习)
- 微软Win10商店开发方面更新:新增多种广告工具包功能
- 判断一个字符串是否是合法IP地址
- m4的fpu使用
- java集合中的Iterable接口的简介与运用
- java静态代理和动态代理(JDK&cglib)
- Android动画translate、scale、alpha、rotate各属性详解
- 重温java基础
- Eclipse和PyDev搭建python开发环境
- 1、选择最佳微控制器的10个步骤
- Spring之bean