zoukankan      html  css  js  c++  java
  • importlib 模块

    1. 动态导入模块

    支持字符串导入模块

    foo.py

    class Func:
        def __init__(self):
            self.test()
    
        def test(self):
            print(__name__)
    

    test.py

    import importlib
    
    
    def dynamic_import(module):
        return importlib.import_module(module)
    
    
    if __name__ == '__main__':
        result = dynamic_import('foo')		# 以字符串形式导入 foo.py
        print(result)
        result.Func()		# 调用 foo.py 中的 Func() 类
    

    运行结果如下:

    <module 'foo' from 'E:\Python_virtualenvs\for_django\Projects\算法\importlib 模块\foo.py'>
    foo
    

    2. 模块导入检查

    导入模块之前检查模块是否存在

    import importlib
    import importlib.util
    
    def check_module(module_name):
        module_spec = importlib.util.find_spec(module_name)
        if module_spec:
            print('模块 %s 导入成功' % module_name)
            return module_spec
        else:
            print('导入不存在模块 %s ' % module_name)
            return None
    
    
    if __name__ == '__main__':
        module_spec = check_module('fake_module')
        module_spec = check_module('foo')
        print(module_spec)
        if module_spec:
            module = importlib.util.module_from_spec(module_spec)
            print(module)
    

    运行结果:

    导入不存在模块 fake_module 
    模块 foo 导入成功
    ModuleSpec(name='foo', loader=<_frozen_importlib_external.SourceFileLoader object at 0x000001DBEF9BC198>, origin='E:\Python_virtualenvs\for_django\Projects\算法\importlib 模块\foo.py')
    <module 'foo' from 'E:\Python_virtualenvs\for_django\Projects\算法\importlib 模块\foo.py'>
    
  • 相关阅读:
    idea创建Javaweb项目
    装配bean,基于xml
    IoC(控制反转)和DI(依赖注入)
    jar包介绍
    使用的基本方法
    struts2的常量
    jar包
    调用函数,模块
    Vue中的指令(听博主说总结的很好)
    React的核心概念
  • 原文地址:https://www.cnblogs.com/midworld/p/10952684.html
Copyright © 2011-2022 走看看