我们知道import语句是用来导入外部模块的,当然还有from...import...也可以,但是其实import实际上是使用builtin函数__import__来工作的。
    在一些程序中,我们可以动态地去调用函数,如果我们知道模块的名称(字符串)的时候,我们可以很方便的使用动态调用。

  1. import glob,os
  2. modules = []
  3. for module_file in glob.glob("*-plugin.py"):
  4. try:
  5. module_name,ext = os.path.splitext(os.path.basename(module_file))
  6. module = __import__(module_name)
  7. modules.append(module)
  8. except ImportError:
  9. pass #ignore broken modules
  10. #say hello to all modules
  11. for module in modules:
  12. module.hello()

使用__import__函数获得特定函数

  1. def getfunctionbyname(module_name,function_name):
  2. module = __import__(module_name)
  3. return getattr(module,function_name)

还可以使用这个函数实现延迟化的模块导入

  1. class LazyImport:
  2. def __init__(self,module_name):
  3. self.module_name = module_name
  4. self.module = None
  5. def __getattr__(self,name):
  6. if self.module is None:
  7. self.module = __import__(self.module_name)
  8. return getattr(self.module,name)
  9. string = LazyImport("string")
  10. print string.lowercase

最新文章

  1. 网站统计中的数据收集原理及实现(share)
  2. 【BZOJ 1007】【HNOI 2008】水平可见直线 解析几何
  3. UVA 489 Hangman Judge (字符匹配)
  4. HFile解析 基于0.96
  5. 如何提高Web服务端并发效率的异步编程技术
  6. Android 绘制动态图
  7. 程序员必备基础知识:通信协议——Http、TCP、UDP
  8. Apache的安装
  9. spring cloud+docker 简单说一说
  10. 自学Python2.6-深浅拷贝
  11. 【python】内部函数
  12. 初探React与D3的结合-或许是visualization的新突破?
  13. ide phpStorm管理远程主机
  14. webdriver.chrome()禁止加载图片
  15. LXC vs Docker
  16. python3下获取主流浏览器和python的安装路径
  17. P1824 进击的奶牛(二分)
  18. sqlserver中如何将mdf文件还原到数据库
  19. Python脚本语言第一行的写法
  20. 【MD5加密】MD5加密编码的坑

热门文章

  1. java——从.net再学习java
  2. 03 js事件循环
  3. BIgDecimal输出时添加金额分割符
  4. ak-1
  5. 02—EF初次体验
  6. CF732F Tourist Reform[边双缩点]
  7. vector简单使用
  8. @Valid验证
  9. i3wm脚本
  10. laravel 服务容器的用法