Python 静态导入与动态导入

目录

1.静态导入

2.动态导入

3.性能与使用场景对比


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)

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值