反射说简单点 --> 就是利用字符串的形式去对象(模块)中操作(寻找/检查/删除/设置)成员。

需求:由用户输入一个模块名,用户输入什么模块名,文件中就导入什么模块:

1:文件都在同一目录下的导入

在同一目录下建立两个文件,index.py , commons.py

commons.py文件内容如下:

def f1():return "F1"
def f2():return 'f2'

在index.py文件中书写代码:

m = input('input module : ')
module = __import__(m)#module相当于import modulename as f形式中的别名
print(module.f1())

使用 __import__('模块名')的方式导入模块!为什么要使用这种方式导入模块,而不使用 import modulename方式导入呢?因为用户输入进来的都是字符串,而import modulename方式,modulename不是一个字符串!

此时执行index.py文件,就能正常导入模块,接收f1函数中的返回值:

需求:上面已经实现用户输入模块名就导入哪个模块,现在要求由用户再输入函数名,然后文件中就执行该模块中的对应的函数

m = input('input module : ')#用户输入模块名
f = input('input func name : ')#用户输入函数名module = __import__(m)#导入用户输入的模块
func = getattr(module,f)#调用用户输入的函数print(func())

如果commons模块与index.py文件不在同一目录的导入:假如commons.py文件在lib/commons.py下

module = __import__('lib.'+m,fromlist=True)#导入用户输入的模块

附录:

getattr(object,name) :获取指定模块中的指定成员

hasattr(object,name):判断指定模块中是否存在指定成员

delattr(object,name):删除指定模块中的指定成员!不影响原文件,只是在内存中删除

setattr(object,name,value):给指定模块增加一个成员!不影响原文件,只是在内存中增加

转载于:https://www.cnblogs.com/ginvip/p/6263028.html

Python高手之路【十】python基础之反射相关推荐

  1. Python 进阶之路 (十二) 尾声即是开始

    Python进阶之路总结 大家好,我的<< Python进阶之路>>到这一期就到此为止了,和 <<Python 基础起步>>不同,在掌握了一些基础知识后 ...

  2. python高手之路第三版_《Python高手之路(第3版)》——1.3 版本编号-阿里云开发者社区...

    本节书摘来自异步社区<Python高手之路(第3版)>一书中的第1章,第1.3节,作者[法]Julien Danjou,王飞龙 译,更多章节内容可以访问云栖社区"异步社区&quo ...

  3. 《Python高手之路(第3版)》——1.5 Joshua Harlow访谈

    本节书摘来自异步社区<Python高手之路(第3版)>一书中的第1章,第1.5节,作者[法]Julien Danjou,王飞龙 译,更多章节内容可以访问云栖社区"异步社区&quo ...

  4. python学习之路:python连接阿里云ODPS

    python学习之路:python连接阿里云ODPS 前言 本人最近在学习使用ODPS,希望把学习过程记录下来,方便自己查阅. 1.安装ODPS pip install ODPS 2.连接阿里云odp ...

  5. 我的Python成长之路---第六天---Python基础(18)---2016年2月20日(晴)

    os模块 提供对操作系统进行调用的接口 >>> import os >>> os.getcwd() # 获取当前工作目录,类似linux的pwd命令 '/data/ ...

  6. 小白用python处理excel文件-python高手之路python处理excel文件(方法汇总)

    python3处理Excel文件的实际应用谢谢时光大盗把小编的时间偷走让小编没有时间去想你. 最近遇到个问题,使用python处理Excel文件.如何将表格中数据读取以后以而小编使用的是python3 ...

  7. python学习之路-1 python简介及安装方法

    python简介 一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年发明,第一个公开发行版发行于1991年. 目前最新版本为3.5.1,发布于2015年12月07日 ...

  8. 【Python成长之路】Python爬虫 --requests库爬取网站乱码(\xe4\xb8\xb0\xe5\xa)的解决方法【华为云分享】

    [写在前面] 在用requests库对自己的CSDN个人博客(https://blog.csdn.net/yuzipeng)进行爬取时,发现乱码报错(\xe4\xb8\xb0\xe5\xaf\x8c\ ...

  9. 【Python成长之路】Python爬虫 --requests库爬取网站乱码(\xe4\xb8\xb0\xe5\xaf\x8c\xe7\x9)的解决方法

    [写在前面] 在用requests库对自己的CSDN个人博客(https://blog.csdn.net/yuzipeng)进行爬取时,发现乱码报错(\xe4\xb8\xb0\xe5\xaf\x8c\ ...

  10. 《正规军的Python进阶之路|Python技能树测评》

    通过<Python技能树测评>判断自己在哪个级别: Python技能树测评[https://bbs.csdn.net/skill/python] 完整的[Python]学习体系,给你正规军 ...

最新文章

  1. 【LC3开源峰会网络技术系列之三】基于JStorm的网络分析平台
  2. 关于BitmapImage EndInit()时报值不在范围内的异常
  3. Android 通过onTouchEvent判断是否为双击事件
  4. JavaScript四舍五入的改进
  5. 数据库和ORMS:使用SQLAlchemy与数据库通信
  6. FMS3 参数设定档修改
  7. 微信公众号查询粉丝列表
  8. 软件工程课程实践-需求规格说明书
  9. 微机计算机继电保护原理,微机继电保护的发展历史
  10. Windows 10内置Hyper-V虚拟机安装XP系统(二) - 配置网络
  11. 计算机视觉不规则roi原理,C++ 中利用 Opencv 得到不规则的ROI 区域(已知不规则区域)...
  12. 微信支付-超详细java开发-小程序对接
  13. wps插入C/C++代码
  14. 新一代智能视频云发展现状分析:五大要素成关键
  15. 2.6.1.3 Packet Tracer - Configure Cisco Routers for Syslog, NTP, and SSH Operations
  16. 男人凭什么三十而立——一定要攒点钱
  17. 事件抽取文献整理(2018)
  18. 计算机大纲中的应用,计算机的应用论文提纲模板范本 计算机的应用论文大纲怎么写...
  19. MATLAB2018a 64安装
  20. 18款奔驰C200L升级柏林之声音响,音质享受,驾驶乐趣

热门文章

  1. 《JavaScript面向对象精要》——第1章 原始类型和引用类型 1.1 什么是类型
  2. Grafana-zabbix配置模板
  3. mysql的日期和时间函数
  4. 里面的自带的字典在哪里_影视剪辑高清素材哪里找?4种方法教你,适合新手入门...
  5. mysql text转varchar_关于企业面试中:“ Mysql重点 ”的28道面试题解析!
  6. 多线程中的互斥控制程序代码_Java中的并发——线程安全性
  7. 使用jpa控制器层如何编写_用错误的方式编写Kubernetes控制器仍然有用
  8. 2017数学建模b题回顾_12月热门文章和2017年回顾
  9. linux如何配置网络设置_如何在Linux中配置网络
  10. 我妈妈要求一台Linux计算机