2024-06-10 19:45:31 发布
网友
复制..
我有一个成功运行的方法定义,但希望在运行时修改它。
例如: 如果我有办法
def sayHello(): print "Hello"
type(sayHello)给了我答案“type function”。我能得到这个函数对象的源代码字符串吗。这被认为是安全问题吗?
使用检查模块:
import inspect import mymodule print inspect.getsource(mymodule.sayHello)
必须在导入的模块中定义函数。
sayHello.func_code.co_code返回一个字符串,我认为该字符串包含该方法的编译代码。由于Python是在内部将代码编译为虚拟机字节码,所以剩下的可能就是这些了。
sayHello.func_code.co_code
不过,你可以拆卸它:
import dis def sayHello(): print "hello" dis.dis(sayHello)
这张照片:
1 0 LOAD_CONST 1 ('hello') 3 PRINT_ITEM 4 PRINT_NEWLINE 5 LOAD_CONST 0 (None) 8 RETURN_VALUE
查看Decompyle中的de编译器。
要获取类实例上方法的源,请执行以下操作:
import inspect myobj = MyModel() print inspect.getsource(myobj.my_method)
阅读更多:https://docs.python.org/2/library/inspect.html#inspect.getsource
使用检查模块:
必须在导入的模块中定义函数。
sayHello.func_code.co_code
返回一个字符串,我认为该字符串包含该方法的编译代码。由于Python是在内部将代码编译为虚拟机字节码,所以剩下的可能就是这些了。不过,你可以拆卸它:
这张照片:
查看Decompyle中的de编译器。
要获取类实例上方法的源,请执行以下操作:
阅读更多:https://docs.python.org/2/library/inspect.html#inspect.getsource
相关问题 更多 >
编程相关推荐