官方推荐方法:

test_mod.py

def hi():
print('Hi')

test.py

import importlib

q = importlib.import_module('test_mod') #动态导入模块
q.hi()

如果导入文件夹下面的模块引号内可以这样:目录.模块名

  q = importlib.import_module('app.test_mod') #动态导入模块

调用的模块:lib文件夹下面的commons.py

def f1():
print('函数1') def f2():
print('函数2') def f3():
print('函数3')

反射:根据用户输入字符导入模块并调用模块中的方法

import os

yhf = 'lib'

def wdc():
inp = input('请输入(模块名/方法名):')
# 将输入的字符串根据‘/’分割,并分别赋值给m和f
try:
m,f = inp.split('/')
# 检测是要导入的模块是否存在
except Exception:
print('输入格式不正确!')
else:
if os.path.exists(yhf + '/' + m + '.py'): # 根据字符串导入模块,若导入文件夹下面的模块,需要后面添加fromlist=True
obj = __import__(yhf + '.' + m, fromlist=True)
# 检测模块中是否存在成员(模块,成员名),返回 T/F
if hasattr(obj, f):
# 根据字符串的形式去对象(模块)中寻找成员。返回成员名
func = getattr(obj, f) # (模块,用户输入的字符串)
# 执行方法
func()
else:
# 当方法名输入错误时
print('没有找到该方法!')
else:
print('不存在此模块!') wdc()

执行结果:

四个方法:

  delattr()  根据字符串删除方法

  setattr()  根据字符串创建方法

  hasattr()  根据字符串检测方法是否存在

  getattr()  根据字符串寻找方法

最新文章

  1. 第一次打开Lightroom时的基本设置
  2. 深入解析direct path read (转)
  3. Spring+C3P0数据库连接池配置
  4. android操作文件
  5. Eclipse中设置在创建新类时自动生成注释
  6. Paxos算法 Paxos Made Simple
  7. POJ 1698 (二分图的多重匹配)
  8. Java_并发线程_CompletionService
  9. swift -- 构造/析构函数
  10. 1133: 零起点学算法40——多组测试数据(a+b)II
  11. C++基本知识点总结(网摘)
  12. Jquery Mobile笔记之一
  13. Populate screen data automatically
  14. Spring Boot – 自定义PropertyEditor
  15. 通过 Systemd Journal 收集日志
  16. java中的key事件监听机制
  17. 2018.09.11 bzoj47214721: [Noip2016]蚯蚓(单调队列)
  18. phpredis -- redis_cluster
  19. 【2016NOIP十连测】【test4】【状压DP】【容斥原理】巨神兵
  20. Yarn NodeManager restart

热门文章

  1. 服务器NGINX连接数
  2. WebRoot/WEBINF下的classes文件内无法生成编译文件,classes下没有文件,eclipse无法编译项目
  3. oracle 列合并成并用拼接符拼接 -- LISTAGG函数用法
  4. 【转载】spring mvc 后端获得前端传递过来的参数的方法
  5. Python senium 中页面属性
  6. Vue起飞前的准备
  7. Python之装饰器笔记
  8. C++中如何记录程序运行时间
  9. delete删除数据造成归档日志增加,操作系统空间不足导致数据库hang住
  10. php 配置微信公众号