Python 静态导入与动态导入的实现示例

 更新时间:2024年05月16日 08:54:43   作者:要努力学习鸭  
Python静态导入和动态导入是指导入模块或模块内部函数的两种方式,本文主要介绍了Python 静态导入与动态导入的实现示例,具有一定的参考价值,感兴趣的可以了解一下

1.静态导入

静态导入是指在代码的顶部或模块开始部分显式地写出导入语句。模块名在编写代码时就已经确定了,并且在解释器运行到该语句时立即进行导入。这是最常用的导入方法。

import math
print(math.sqrt(9))

静态导入方式有部分导入、别名导入、相对导入、导入所有内容等。

#部分导入:
from math import sqrt, pi

#别名导入  
import math as mt

#相对导入 (导入上一层目录中的模块)
from .. import module1  

#导入所有内容
from math import *

2.动态导入

动态导入(运行时导入)是指在程序运行的过程中,根据某些条件动态决定导入哪个模块。这种方式使用的是 Python 提供的importlib模块,可以让程序在运行时决定导入哪个模块。

动态导入的模块名称可以是变量(如下方module_name),可以根据不同的条件动态变化。

import importlib

module_name = "math" 
math_module = importlib.import_module(module_name)

print(math_module.sqrt(9))

除了使用importlib进行动态导入,还有条件导入、延迟导入、通过_import_导入等。

#条件导入,通常用于处理可选依赖或兼容性问题
try:
    import cPickle as pickle
except ImportError:
    import pickle

#延迟导入,在函数或方法内部导入模块。可以减少程序启动时的开销,适用模块很大且在特定情况下使用时。
def complex_function():
    import math
    return math.sqrt(9)
print(complex_function())

#通过__import__导入,一个内置函数,以更底层的方式导入模块
module_name = "math"
math_module = __import__(module_name)
print(math_module.sqrt(9))

3.性能与使用场景对比

性能:
静态导入:所有导入都在程序开始时完成,导入过程一次性完成,性能开销低,也可以减少运行延迟。
动态导入:每次动态导入都需要进行模块的查找和加载,可能会增加一些性能开销以及运行时延迟;模块在实际需要时才导入,可以减少启动时间和内存占用。
使用场景:
静态导入:明确知道需要哪些模块时,以及需要高性能、低延迟的场景。
动态导入:需要高灵活性和动态行为时,如插件系统、动态配置系统、根据用户输入选择不同功能等场景。例如一个插件系统,不同的插件名称是在运行时由用户输入的:

import importlib

def load_plugin(plugin_name):
    try:
        plugin_module = importlib.import_module(plugin_name)
        plugin_module.run()
    except ImportError:
        print(f"Error! Plugin {plugin_name} not found.")

plugin_name = input("Please enter the plugin name: ")
load_plugin(plugin_name)

到此这篇关于Python 静态导入与动态导入的实现示例的文章就介绍到这了,更多相关Python 静态导入与动态导入内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • python使用pandas按照行数分割表格

    python使用pandas按照行数分割表格

    本文主要介绍了python使用pandas按照行数分割表格,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Python利用socket模块开发简单的端口扫描工具的实现

    Python利用socket模块开发简单的端口扫描工具的实现

    这篇文章主要介绍了Python利用socket模块开发简单的端口扫描工具的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • python软件都是免费的吗

    python软件都是免费的吗

    在本篇文章中小编给大家整理的是关于python软件免是否费的相关知识点,需要的朋友们可以参考下。
    2020-06-06
  • python如何通过正则匹配指定字符开头与结束提取中间内容

    python如何通过正则匹配指定字符开头与结束提取中间内容

    这篇文章主要介绍了python通过正则匹配指定字符开头与结束提取中间内容的操作方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • 详解Python如何利用pymysql封装项目通用的连接和查询

    详解Python如何利用pymysql封装项目通用的连接和查询

    一个项目通常都需要有数据库,本文就来为大家详细讲讲Python如何利用pymysql简单分装一个通用的连接,关闭和查询,需要的可以参考一下
    2022-07-07
  • python Django实现增删改查实战代码

    python Django实现增删改查实战代码

    这篇文章主要介绍了python Django增删改查快速体验,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • 基于Python实现简易的自制头像神器

    基于Python实现简易的自制头像神器

    作为一个不会PS的普通程序员要怎么快速制作一个属于自己的渐变头像呢?十行 Python代码就能解决,非常简单。感兴趣的小伙伴可以跟随小编一起学习一下
    2022-01-01
  • python mock测试的示例

    python mock测试的示例

    这篇文章主要介绍了python mock测试的示例,帮助大家利用python进行模拟接口测试,感兴趣的朋友可以了解下
    2020-10-10
  • Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例

    Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例

    这篇文章主要介绍了Python实现读写sqlite3数据库并将统计数据写入Excel的方法,涉及Python针对sqlite3数据库的读取及Excel文件相关操作技巧,需要的朋友可以参考下
    2017-08-08
  • python实现防截图的6种方法详解

    python实现防截图的6种方法详解

    防截图是指一组技术或方法,用于防止他人在未经允许的情况下在屏幕上截取或记录图像,这是一个重要的安全措施,它可以防止窃取敏感信息或监视个人信息,本文为大家整理了6种python可以防截图的方法,需要的可以参考下
    2023-10-10

最新评论