zoukankan      html  css  js  c++  java
  • Python内置函数 __import__ 动态加载模块

    __import__() 函数用于动态加载类和函数 。

    如果一个模块经常变化就可以使用 __import__() 来动态载入。

    语法

      __import__(name[, globals[, locals[, fromlist[, level]]]])

    说明

      1. 函数功能用于动态的导入模块,主要用于反射或者延迟加载模块。

      2. __import__(module)相当于import module

      3. __import__(package.module)相当于from package import name,如果fromlist不传入值,则返回package对应的模块,如果fromlist传入值,则返回package.module对应的模块

    案例演练

    文件目录结构如下

    # main.py
    
    # 1、动态加载同级目录模块
    #  __import__(module)相当于import module
    index = __import__('file1')
    print(index)
    # 执行file1模块中的函数
    index.def_file1()
    print('='*30)
    
    
    # 2、动态加载子目录模块
    # __import__(package.module)相当于from package import name,如果fromlist不传入值,则返回package对应的模块,
    # 如果fromlist传入值,则返回package.module对应的模块。
    # 2.1 fromlist不传入值,执行file2模块中的函数
    print('fromlist不传入值')
    index = __import__('case.file2')
    print(index)
    index.file2.def_file2()
    print('='*30)
    
    
    # 2.2 fromlist传值,执行file2模块中的函数
    print('fromlist传入值')
    index = __import__('case.file2', fromlist=('file2',))
    print(index)
    index.def_file2()
    print('='*30)
    
    
    module_name = 'file2'
    index = __import__(f'case.{module_name}', fromlist=(f'{module_name}',))
    print(index)
    index.def_file2()
    # file1.py
    
    def def_file1():
        print("调用同级目录中的file1函数")
    # file2.py
    
    def def_file2():
        print("调用子目录中的file2函数")

    执行结果

  • 相关阅读:
    .net core EF 入门笔记Code First
    Windows环境下安装MongodDB
    Ueditor1.4.3.3 富文本编辑器在图片不显示问题
    .net IIS网站部署Host文件简单应用
    .Net初学Less的安装与部署
    EF+MVC动态Lamda表达式拼接(学习笔记二)
    EF+MVC动态Lamda表达式拼接(学习笔记)
    区块链从入门到放弃
    Unity3D的update和FixedUpdate
    忽雷太极拳十三式
  • 原文地址:https://www.cnblogs.com/testlearn/p/13974275.html
Copyright © 2011-2022 走看看