getattr(sys.modules[__name__], func_name)】的更多相关文章

有时我们需要将一个文件的信息(类.函数及变量)保存到文件,我们不能直接保存函数对象,而是将其转化为fn.__name__,问题来了,当我们想通过读取文件的形式重新配置这些类.函数时,该如何把这些字符串转换为对应的函数对象呢? # test.py import sys def fn(): print('hello world') func_name = fn.__name__ fn_obj = getattr(sys.modules[__name__], func_name) # 根据函数名(fu…
A way to get a handle to the current running module in Python: import sys module = sys.modules[__name__] it really only works if you are doing the whole sys.modules litany in the very module you want to get a handle to.     所以,getattr(sys.modules[__n…
关于sys.modules[__name__]的用法,百度上阅读量比较多得一个帖子是:https://www.cnblogs.com/robinunix/p/8523601.html 对于里面提到的基础性的知识点这里就不再重复了,大家看原贴就好.这里为大家提供一个详细的例子,帮助大家更进一步的理解. 有这样一个需求:我们需要在whw.json文件中读取出name键对应的value,然后用这个value通过getattr方法取到相应模块的对象名,实现该对象中的方法. whw.json文件中的内容如…
sys.modules是一个全局字典,该字典是python启动后就加载在内存中.每当程序员导入新的模块,sys.modules都将记录这些模块.字典sys.modules对于加载模块起到了缓冲的作用.当某个模块第一次导入,字典sys.modules将自动记录该模块.当第二次再导入该模块时,python会直接到字典中查找,从而加快了程序运行的速度. 字典sys.modules具有字典所拥有的一切方法,可以通过这些方法了解当前的环境加载了哪些模块 import  sys print sys.modu…
1.sys.modules 存放已经缓存的模块 值是dict 2.sys.path 搜索路径 值是list 3.if __name__= __main__ 可以看成python的程序入口,如果直接执行该.py文件,那么执行后面的代码,如果作为模块导入,则不执行后面的代码…
Python中所有加载到内存的模块都放在sys.modules.当import一个模块时首先会在这个列表中查找是否已经加载了此模块,如果加载了则只是将模块的名字加入到正在调用import的模块的Local名字空间中.如果没有加载则从sys.path目录中按照模块名称查找模块文件,模块文件可以是py.pyc.pyd,找到后将模块载入内存,并加入到sys.modules中,并将名称导入到当前的Local名字空间. 详细信息参考: http://www.cnblogs.com/qq78292959/a…
使用了pypiwin32 包中的pythoncom的时候,当跑在apache下,日志报错: [Thu Aug 27 17:06:44 2015] [error] [client 127.0.0.1] import pywintypes[Thu Aug 27 17:06:44 2015] [error] [client 127.0.0.1] File "C:\\Python27\\lib\\site-packages\\win32\\lib\\pywintypes.py", line 1…
方法如下 import requests func_name = 'get' fn_obj = getattr(requests,func_name) fn_obj('http://www.baidu.com') 如果是当前文件的方法 test.py import sys def fn(): print('hello world') func_name = fn.__name__ fn_obj = getattr(sys.modules[__name__], func_name) # 根据函数名…
反射 : 是用字符串类型的名字 去操作 变量 相比于用eval('print(name)') 留有 安全隐患 反射 就没有安全问题 hasattr 语法: hasattr(object, name)object可以是对象,类,模块,当前Py文件.name是一个给字符串数据类型,可以是变量(属性),函数(方法).如果name在object中存在,则返回Ture,否则返回False. getattr与hasattr语法相同,返回的结果是对应name的值或函数. 反射对象的方法 a.func() re…
import sys def foo(): print("哈哈想不到吧") if __name__ == '__main__': getattr(sys.modules[__name__],"foo")()…