1、动态导入:

运行时,根据用户需求(提供字符串),找到模块的资源动态加载起来。

2、内建函数__import__()

def __import__(name, globals=None, locals=None, fromlist=(), level=0):

name:模块名

import语句本质上就是调用这个函数,但是不鼓励直接使用它,建议使用importlib.import_module()。

sys = __import__('sys')等价于import sys

测试 直接调用:

测试 可以动态交互加载模块:

1 if __name__ == '__main__':2 name = input('>>>')3 mod = __import__(name) #import tt

4 cls = getattr(mod, 'A')5 cls().showme()

2、importlib.import_module()

1 importimportlib2 importlib.import_module(name, package=None)

支持绝对导入 和 相对导入,如果是相对导入,package必须设置。

测试:插件化编程的核心代码。

相对导入:

3、插件化编程技术:

依赖的技术:

反射:运行时获取类型的信息,可以动态维护类型数据。

动态import:推荐使用importlib 模块,实现动态import模块的能力。

多线程:可以开启一个线程,等待用户输入,从而加载指定名称的模块。

加载的时机:

1、程序启动时:

像pycharm 这样的工具,需要很多组建,这些组件也可能是插件,启动的时候,扫描固定的目录,加载插件

2、程序运行中:

程序运行过程中,接受用户指令或请求,启动相应的插件。

两种当时各有利弊,如果插件过多,或导致程序启动很慢,如果用户需要时加载,如果产检太大或者依赖多,插件也会启动慢

所以先加载必须的,常用的插件,其他插件使用时,在动态载入。

4、应用:

软件的设计不可能完美,或者在某些功能上,不可能做的专业,需要专业的客户增强。如PS

5、接口和插件的区别:

接口往往是暴露出来的功能,例如模块提供的函数或方法,加载模块后嗲用这些函数完成功能,

接口也是一种规范,它约定了必须是此案的功能(必须提供某名称的函数), 但是不关心怎么实现这个功能。

插件是把模块加载到系统中,运行它,增强当前系统功能,或者提供系统不具备的功能,往往插件技术应用在框架设计中,系统本身设计简单化,轻量级,实现基本功能后,其他功能通过插件加入进来,方便扩展。

python做软件插件_Python-插件化开发相关推荐

  1. python组件化软件策划_Vue组件化开发

    一. 通过axios实现数据请求 1. json简介 json是 JavaScript Object Notation 的首字母缩写,单词的意思是javascript对象表示法,这里说的json指的是 ...

  2. 用python做软件开发有前途吗_做软件开发有前途吗?

    作为一名IT行业的从业者,我来回答一下这个问题. 虽然互联网领域的持续快速发展,尤其是近些年来移动互联网领域的发展,在很大程度上促进了IT行业领域对于开发人才的需求,但是目前要想找到一份适合自己的软件 ...

  3. 用python做自我介绍_python入门教程NO.2 用python做个自我介绍

    本文涉及的python基础语法为:数据类型等 数据类型 1. 字符串的拼接 我们在上一章中已经简单介绍了一下字符串的创建方式,这里我们简单学习一下字符串的运算和拼接. 字符串的运算 `字符串的加法` ...

  4. 软件设计师(结构化开发)

    结构化开发 模块独立 每个模块完成一个相对独立的特定子功能,并且与其他模块之间的联系简单 耦合(低) 是模块之间的相对独立性的度量.耦合取决于每个模块之间接口的复杂程度.调用模块的方式以及通过接口的信 ...

  5. python做时序图_python如何做时间序列

    python做时间序列的方法:首先导入需要的工具包,输入"data.plot()","plt().show()"命令绘制时序图:然后由acf,pacf判断模型参 ...

  6. python加载机制_Python插件机制实现详解

    插件机制是代码/功能反向依赖注入到主体程序的一种方法,编译型语言通过动态加载动态库实现插件.对于Python这样的脚本语言,实现插件机制更简单. 机制 Python的__import__方法可以动态地 ...

  7. python做abaqus后处理_python进行abaqus后处理的二次开发,我想提取odb文件中的nodeSet,结果总提示Keyerror,请各位大神指教。...

    运行: Cmd中运行:abaqus scrip=plot.py 之所以用python因为abaqus的界面是基于python的,用它来进行批处理或者后处理是比较不错的,希望能和大家分享abaqus的更 ...

  8. python编程软件排行榜_Python编程开发工具:这10个对Web开发者最有用的Python包

    Python编程一时间成为了开发人员最喜欢的语言之一.无论是专业的,业余的,还是作为一个Python初学者,都可以从Python编程语言及其程序包中受益.Python已经被证明是当今最具活力的面向对象 ...

  9. python怎么做软件界面_python – 如何自定义桌面应用程序的标题栏和窗口

    我如何自定义标题栏(包括:关闭,最大化,最小化按钮,标题)和用PyQt编写的桌面应用程序框架,使其看起来像下面的图像?我需要一种方法来指定我想用于标题栏元素的颜色(按钮,文本标题和条形和按钮的背景颜色 ...

最新文章

  1. 用存储过程生成记录编号
  2. windows下安装python mysqldb
  3. ecshop 后台添加评论_如何提升外卖营业额?评论回复不可忽视
  4. 插值方法——Lagrange插值公式
  5. 关于浏览器模式和文本模式的困惑
  6. vb.net 弹出对话框 修改按钮名_Microsoft Excel怎么批量快速修改批注?
  7. 项目管理学习总结(2)——需求收集和管理
  8. Docker系列(二):Docker安装
  9. 线上四台机器同一时间全部 OOM,到底发生了什么?
  10. java商城项目_javaweb实战之商城项目开发(一)
  11. php 1个中文几个字节,PHP函数第15款:gbk中文截取,1个中文字节为2个英文字节 cn_substr...
  12. 【优化调度】基于改进遗传算法的公交车调度排班优化的研究与实现(Matlab代码实现)
  13. 哈希加密matlab,图像加密算法之基于Hash函数和多混沌系统的加密
  14. Word中删除指定页的页眉和页脚 + 删除第一页空白页 (简单、有效)
  15. 计算机中的随机存储器和只读存储器是什么,只读存储器和随机存储器的主要区别是什么...
  16. Ubuntu下Rhythmbox乱码的解决办法
  17. Mybatis查询oracle之clob类型
  18. 本地摄像头应用到远程计算机,3个可在iPad / iPhone上远程查看网络摄像头的应用 | MOS86...
  19. java使用递归,复制文件夹下的所有子文件
  20. Nvidia Tensor Core-MMA PTX编程入门

热门文章

  1. 自考计算机辅助设计真题07075,07075计算机辅助设计.doc
  2. Android q索尼手机相机算法,索尼相机很强为何索尼手机拍照DxO垫底?没有针对性优化...
  3. 【潜渊症 | 万字解析】模组制作研究讲义
  4. (手机版)生产人员计件扫码系统
  5. 高校暑期社会实践微信小程序的设计与实现
  6. Uiautomation 在Windows WPF和Qt 产品上的应用
  7. HOG特征详解:Histograms of Oriented Gradients for Human Detection
  8. 数字图像处理——图像分割
  9. 11.15luffycity(7)
  10. 如何制作照片蒙太奇效果?