__import__ 模块为Python的内置模块,可以动态(字符串方式)加载其他类、函数、模块!

1、加载同层目录下的模块功能(同一个包下的其他功能函数)
    main.py和test_demo.py 都在同一个层目录(p_test目录)下

点击(此处)折叠或打开

  1. #!/usr/bin/env python
  2. # _*_ coding: utf-8 _*_

  3. #test_demo.py 文件

  4. def test():
  5.     print 'test demo!!!'
    动态的加载方式

点击(此处)折叠或打开

  1. #!/usr/bin/env python
  2. # _*_ coding: utf-8 

  3. #main.py 文件

  4. model = __import__('test_demo')    
  5. func = getattr(model, 'test')
  6. func()
    正常的加载方式

点击(此处)折叠或打开

  1. #!/usr/bin/env python
  2. # _*_ coding: utf-8 _*_

  3. #main.py 文件

  4. import test_demo
  5. test_demo.test()

2、加载其他模块功能(其他包下的功能函数)
    main.py(p_test目录下)和test_demo.py (demo目录下)不在同一个层目录下

点击(此处)折叠或打开

  1. #!/usr/bin/env python
  2. # _*_ coding: utf-8 _*_

  3. #test_demo.py 文件

  4. def test():
  5.     print 'test'
    动态加载方式

点击(此处)折叠或打开

  1. #!/usr/bin/env python
  2. # _*_ coding: utf-8 _*_

  3. #main.py 文件

  4. model = __import__('demo.'+'test_demo')
  5. method = getattr(model, 'test_demo')
  6. func = getattr(method, 'test')
  7. func()
    正常加载方式

点击(此处)折叠或打开

  1. #!/usr/bin/env python
  2. # _*_ coding: utf-8 _*_

  3. #main.py 文件

  4. import demo.test_demo
  5. demo.test_demo.test()
  6. 或者
  7. from demo import test_demo
  8. test_demo.test()

__import__ 相关的还有四个内置函数:getattr(获取)、setattr(设置)、hasattr(检查)、delattr(删除),学懂了再来补充记录。




09-08 13:47