反射
通过字符串的形式,导入模块
通过字符串的形式,去模块中寻找指定的函数,并执行
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"