反射

  通过字符串的形式,导入模块

  通过字符串的形式,去模块中寻找指定的函数,并执行

1、本质

  __import__  例:dd == __import__('commons')

  __import__("lib.commons.s1")  #这样只能导入到lib,不能导入到s1

  __import__("lib.commons.s1",fromlist=true)  #这样就能导入到s1

2、应用

 1 inp = input("请输入模块:" 2 
 3 inp_func = input("请输入要执行的函数:")
 4 
 5 print(inp,type(inp))
 6 
 7 dd = __import__(inp)  #__import__ 用于一字符串的形式导入模块
 8 
 9 target_func = getattr(dd,inp_func)  #在获取到函数名后加 () 表示执行函数
10 
11 result = target_func()
12 
13 print(result)

 

3、反射功能

不只是在模块中操作,根据字符串的形式去对象中操作成员(一切事物皆对象!)

  getattr()  根据字符串的形式去某个模块中寻找东西

  hasattr()  根据字符串的形式去某个模块中判断东西是否存在

  setattr()   根据字符串的形式去某个模块设置东西

  delattr()   根据字符串的形式去某个模块中删除东西

实例:

1 NAME = "alex"
2 def f1():
3     print("f1")
4     return "F1"
5 
6 def f2():
7     return "F2"
commons文件

相关文章: