反射就是通过字符串的形式,导入模块;通过字符串的形式,去模块寻找指定函数,并执行。利用字符串的形式去对象(模块)中操作(查找/获取/删除/添加)成员,一种基于字符串的事件驱动!
有时候也是为了防止使用eval这种比较危险的函数。
常用的几个函数
# hasattr,getattr # 类名.名字 getattr(类名,'名字') # 对象名.名字 getattr(对象,'名字') # 模块名.名字 import 模块 getattr(模块,'名字') # 自己文件.名字 import sys getattr(sys.modules['__main__'],'名字')
而eval函数则是用来执行一个字符串表达式,并返回表达式的值。
>>>x = 7 >>> eval( '3 * x' ) 21 >>> eval('pow(2,2)') 4 >>> eval('2 + 2') 4 >>> n=81 >>> eval("n + 4") 85
e串的形式,导入模块;通过字符串的形式,去模块寻找指定函数,并执行。利用字符串的形式去对象(模块)中操作(查找/获取/删除/添加)成员,一种基于字符串的事件驱动!
有时候也是为了防止使用eval这种比较危险的函数。
常用的几个函数
# hasattr,getattr # 类名.名字 getattr(类名,'名字') # 对象名.名字 getattr(对象,'名字') # 模块名.名字 import 模块 getattr(模块,'名字') # 自己文件.名字 import sys getattr(sys.modules['__main__'],'名字')
而eval函数则是用来执行一个字符串表达式,并返回表达式的值。
>>>x = 7 >>> eval( '3 * x' ) 21 >>> eval('pow(2,2)') 4 >>> eval('2 + 2') 4 >>> n=81 >>> eval("n + 4") 85
eval由于直接执行的就是命令,是有可能带来安全风险的。