python动态导入模块

官方推荐方法

import importlib

module = importlib.import_module('my_module')

其它方法

module = __import__('my_module')

使用示例:

import importlib

# 导入user.py模块
user = importlib.import_module('user')
# 调用user.py中的get_info()方法,打印信息
print(user.get_info())

user.py文件代码:

def get_info():
    return '姓名:小白, 年龄:20'

运行结果:

姓名:小白, 年龄:20

应用(动态导入指定目录下的所有模块,并返回导入模块的自定义变量和方法)

import glob
import importlib
import os


def import_modules(pathname: str) -> dict:
    """
    导入指定路径或者目录下的模块,并返回模块信息

    :param pathname: 要导入的模块路径(相对路径),可以导入指定目录下的模块,只要符合glob路径表达式写法即可
    :return: 模块信息字典
    """
    modules_dict = {}
    module_paths = glob.glob(pathname)
    for path in module_paths:
        module_name = path.replace(os.sep, '.')[:-3]
        module = importlib.import_module(module_name)
        for element in dir(module):
            # 获取用户自定义的函数和变量名称
            if not element.startswith('__'):
                modules_dict[element] = eval('module.{}'.format(element))

    return modules_dict


if __name__ == '__main__':
    # 导入views目录下的所有模块,并打印模块信息
    module_info = import_modules('views/**.py')
    print(module_info)

运行结果:

{'add_menu': <function add_menu at 0x02FCFFA8>, 'delete_menu': <function delete_menu at 0x02FDDE40>, 'update_menu': <function update_menu at 0x02FDDC00>, 'add_user': <function add_user at 0x0305EF60>, 'delete_user': <function delete_user at 0x0305EFA8>, 'update_user': <function update_user at 0x0305E978>, 'user_name': 'xxx'}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值