动态导入模块:__import__、importlib、动态导入的使用场景


相关内容:

  • __import__
  • importlib
  • 动态导入的使用场景

首发时间:2018-02-23 16:06


__import__:

功能:

  • 是一个函数,可以在需要的时候动态导入模块

使用:

  • __import__(模块名)
  • 但对于多级目录,只会导入第一级
  • 目录结构:
mo1=__import__("des")
mo2=__import__("child.child")
mo3=__import__("child")

print(mo1,mo2,mo3)#mo3与mo2相同

#同级目录使用模块对象来调用
mo1.B()
mo1.fun2()

#对于目录下的,动态导入只会导入第一级目录
mo2.child.A()#虽然没有具体定义类体,但无错就是成功
mo2.child.fun1()
mo3.child.fun1()

importlib:

介绍:

  • 是一个模块,可以进行动态导入模块

用法:

  • importlib.import_module("模块名")
import importlib
mo1= importlib.import_module(‘des‘)
mo2= importlib.import_module(‘child.child‘)
print(mo1,mo2)#mo2直接到child.child

des_B= mo1.B()
mo1.fun2()

mo2.fun1()

动态导入模块的使用场景:

  • 动态切换模块
  • 使用反射判断是否有对应类、方法,无则设置
import importlib
mo3= importlib.import_module(‘child‘)
def func4():
    print(" run in func4")

if hasattr(mo3,"child1"):
    print("yes")
    c=getattr(mo3,"child")
else: #没有则设置
    setattr(mo3,"func4",func4)

mo3.func4()
  • 其他。。。

原文地址:https://www.cnblogs.com/progor/p/8462472.html

时间: 2024-09-29 02:50:47

动态导入模块:__import__、importlib、动态导入的使用场景的相关文章

导入模块的方法(常规导入与动态导入)

1 """动态导入模块的两种方法 2 1.内建函数:__import__( str ) 3 ●它是解释器自己内部使用的,官方不建议使用 4 ●__import__函数与import 语句的既定目标相同 5 但它是一个真正的函数,并接受一个字符串参数. 6 2.模块:importlib 7 ●官方建议使用 8 ●importlib.import_module( str ) 9 此方法支持传入字符串参数来导入一个模块, 10 字符串参数仅仅是一个硬性的字符串代码, 11 但它可以

Python30 动态导入模块/断言

动态导入模块 方式1(解释器调用) 根据当前目录结构进行动态导入模块设置 #在A1.py中 from code1 import aa #使用该方式就可以导入aa这个模块 #在A1.py中 modname = 'aa' from code1 import modname #如果通过导入字符串的方式,来导入模块就会报错,因为modname = 'aa',只是一个字符串形式,不是一个模块 #在A1.py中 mod1 = __import__('code1') #当前只导入了code1这个路径 mod2

七. 使用反射动态导入模块

一 .动态导入模块 # 利用反射动态导入模块 执行模块中的函数 imp = input("请输入你想导入的模块名:") CC = __import__(imp) # 這种方式就是通过输入字符串导入你所想导入的模块 CC.f1() # 执行模块中的f1方法 print("******************************************") imp = input("请输入模块:") dd = __import__(imp) #

【Python学习之旅】---动态导入模块

#当一个模块名为字符窜的时候#第一种方式a=__import__('test.123')a.123 #a拿到的是最顶级的模块test ,然后调用123 #第二种方式import importlib #导入模块a=importlib.import_module('test.123') #调用方法拿到的直接是test.123 原文地址:https://www.cnblogs.com/chenyuxia/p/12147079.html

Python importlib(动态导入模块)

使用 Python importlib(动态导入模块) 可以将字符串型的模块名导入 示例: import importlib module = 'module name' # 字符串型模块名 test = importlib.import_module(module) # 导入模块 print(test.Class().attr) # 打印 Class 类的 attr 属性 原文地址:https://www.cnblogs.com/dbf-/p/10667248.html

Python Importlib.import_module动态导入模块

我的环境是:os系统 python 3.7 在学这个模块之前我们先获取下该模块的路径如下: >>>import module >>>print(module.__file__) 实例: 1. 获取importlib模块的绝对路径结果文件 2. 获取importlib模块的路径名 下面开始正题: 文件结构如下: a.py 的代码 def show(): print("show A") b.py 的代码 def show(): print("s

动态导入模块

如反射的概念,可以通过hasattr(),getattr(),setattr(),delattr()将字符串类型的方法反射为可以直接调用的方法,那么模块的调用除了正常的调用外,是否也可以将个符串格式的模块名导入到当前目录下呢? 动态导入模块的使用: 官方推荐使用版: import importlib aa=importlib.import_module('lib.aa') 标准导入格式为:importlib.import_module(name,package) 解释器自身使用的是: mod=_

Python 动态导入模块

动态导入模块 目录结构: zhangsandeMacBook-Air:1110 zhangsan$ tree . . ├── lib │   └── aa.py ├── test1.py lib目录下有一个aa.py文件,其中C类中有一个属性name: class C: def __init__(self): self.name = 'zhangsan' 在test1.py文件中需要动态导入aa这个模块有两种办法: 第一种: lib = __import__('lib.aa') obj = li

python------Socket网略编程+动态导入模块

上节课程回顾: 静态变量:与类无关,不能访问类里的任何属性和方法. 类方法:只能访问类变量. 属性:把一个方法变成静态属性, 反射: __new__:先于__init__执行: __call__: 1 class Foo(object): 2 def __call__() 3 print "call" #这是什么??? 4 5 #Foo() #后面跟一个括号是实例化 6 Foo()() #后面跟2个括号是执行call方法 异常处理: 断言(assert): 返回为假就不往下执行了.(例