当前位置: 首页 > news >正文

Django之importlib模块

【1】介绍

import  importlib

importlib模块是Python中用于动态加载和导入模块的内置模块

 

它提供了一组函数和类,使得我们可以在运行时根据需要加载模块,并且可以对已导入的模块进行操作和管理

 【2】importlib模块中的import_module方法

【2.1】导入模块

import importlib# 起个变量名
module_name = 'my_package.my_func'module_f = importlib.import_module(module_name)print(module_f)
print(model_f.name)'''
my_package.my_func --------- 文件的地址'''

【2.2】动态加载模块

  • 最小单位,只能到模块名
  • importlib模块提供了import_module函数
  • 通过该函数可以在运行时动态加载一个模块

示例

# 导入模块:动态加载一个模块import importlib# 定义模块的名字module_name = 'math'# 动态导入模块math_module = importlib.import_module(module_name)

【2.3】导入指定模块成员

  • importlib模块还提供了import_module函数的变体import_module
  • 它可以直接返回指定模块的成员

示例

# 导入模块 : 动态加载一个模块
import importlib# 定义模块的名字
module_name = 'math'
# 动态导入模块
math_module = importlib.import_module(module_name)
# 从模块中获取相关的值
sqrt_func = getattr(math_module, 'sqrt')
print(sqrt_func) # <built-in function sqrt>

【2.4】重新加载模块

  • 在开发过程中,我们有时需要重新加载一个已经导入的模块,以便应用最新的修改
  • importlib模块提供了reload函数实现这个功能

示例:

import importlib# 要重新加载的模块名
module_name = 'my_module'# 加载模块
my_module = importlib.import_module(module_name)# 重新加载模块
my_module = importlib.reload(my_module)

【2.5】获取已导入的模块列表

  • 通过sys.modules可以获取当前已导入的所有模块的字典
  • 其中键为模块名称,值为模块对象

示例:演示如何遍历已导入的模块列表

import sysfor module_name,module in sys.modules.items():print(module.name,module)

相关文章:

  • angular 实现模块共享
  • WebSocket了解
  • ErphpdownV16.21插件 安装教程和插件下载
  • 初次使用vs code时go模块安装失败的解决办法
  • SASS的导入文件详细教程
  • 基于OPC UA 的运动控制读书笔记(1)
  • HCIA-RS基础:动态路由协议基础
  • 支持Arm CCA的TF-A威胁模型
  • 系列九、声明式事务(xml方式)
  • pop链反序列化 [MRCTF2020]Ezpop1
  • 微信小程序便民小工具源码
  • Kotlin学习——kt中的类,数据类 枚举类 密封类,以及对象
  • CAN通信协议
  • 论文导读 | 10月专题内容精选:人的预测
  • 面向对象编程:Rust的面向对象特性
  • ➹使用webpack配置多页面应用(MPA)
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • MQ框架的比较
  • python docx文档转html页面
  • Shell编程
  • vue脚手架vue-cli
  • 近期前端发展计划
  • 数组的操作
  • 用 Swift 编写面向协议的视图
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #NOIP 2014#Day.2 T3 解方程
  • #微信小程序:微信小程序常见的配置传值
  • %check_box% in rails :coditions={:has_many , :through}
  • (Git) gitignore基础使用
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (十八)SpringBoot之发送QQ邮件
  • . NET自动找可写目录
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .mysql secret在哪_MySQL如何使用索引
  • .NET Core中的去虚
  • .NET 表达式计算:Expression Evaluator
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .NET中GET与SET的用法
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • @Autowired 与@Resource的区别
  • @ComponentScan比较
  • [20180224]expdp query 写法问题.txt
  • [30期] 我的学习方法
  • [Android] Upload package to device fails #2720