Python 为什么';setprofile';打印这个
印刷品Python 为什么';setprofile';打印这个,python,sys,Python,Sys,印刷品 import sys def a(): print 'aaa' def profiler(frame, event, arg): print event, frame.f_code.co_name, frame.f_lineno, "->", arg # profiler is activated on the next call, return, or exception sys.setprofile(profiler) a() 呼叫5->None#是什么 a
import sys
def a():
print 'aaa'
def profiler(frame, event, arg):
print event, frame.f_code.co_name, frame.f_lineno, "->", arg
# profiler is activated on the next call, return, or exception
sys.setprofile(profiler)
a()
呼叫5->None#是什么
aaa
返回一个6->None#它是什么
返回12->无#是什么
为什么要打印这个。你可能想知道为什么arg没有
arg
对每个事件都有不同的含义。对于“return”,要返回的值是arg
。对于“异常”,它是异常信息的三倍。有关更多信息,请参阅。您可能想知道为什么arg没有arg
对每个事件都有不同的含义。对于“return”,要返回的值是arg
。对于“异常”,它是异常信息的三倍。有关详细信息,请参阅。在每次分析事件中都会调用探查器
函数,因为您对其调用了sys.setprofile
每次调用它时,它都打印一行,因为您将无条件的print
语句作为其主体为什么你那样做,我们很难告诉你,让你的“为什么”问题真的,真的很奇怪
分析事件只是调用和返回,根据:
调用函数(或其他函数)
输入代码块)
函数(或其他代码块)是
就要回来了
'return'
即将调用一个C函数。
这可能是一个扩展函数或
内置的
'c_call'
已返回一个C函数
以下是我观察到的(Python 2.5或2.6,MacOSX)稍微简单、清晰的情况:
'c_return'
>>定义a():
... 打印“aaa”
...
>>>def探查器(帧、事件、参数):
... 打印“PROF%r%r%”(事件,参数)
...
>>>sys.setprofile(探查器)
教授“返回”无
>>>()
教授“呼叫”无
c_call教授
“c_return”教授
PROF'return'(u'a()\n',4)
教授“呼叫”无
教授“呼叫”无
aaa
教授“返回”无
教授“返回”无
不确定为什么您没有看到您应该看到的
c_调用
和c_返回
案例——可能在您的特定平台中没有用于打印的隐式utf-8
转换(什么操作系统?什么级别的Python?什么IDE,如果有的话)
每次调用它时,它都打印一行,因为您将无条件的print
语句作为其主体为什么你那样做,我们很难告诉你,让你的“为什么”问题真的,真的很奇怪
分析事件只是调用和返回,根据:
调用函数(或其他函数)
输入代码块)
函数(或其他代码块)是
就要回来了
'return'
即将调用一个C函数。
这可能是一个扩展函数或
内置的
'c_call'
已返回一个C函数
以下是我观察到的(Python 2.5或2.6,MacOSX)稍微简单、清晰的情况:
'c_return'
>>定义a():
... 打印“aaa”
...
>>>def探查器(帧、事件、参数):
... 打印“PROF%r%r%”(事件,参数)
...
>>>sys.setprofile(探查器)
教授“返回”无
>>>()
教授“呼叫”无
c_call教授
“c_return”教授
PROF'return'(u'a()\n',4)
教授“呼叫”无
教授“呼叫”无
aaa
教授“返回”无
教授“返回”无
不确定为什么您没有看到您应该看到的
c_调用和c_返回
案例——可能在您的特定平台上没有用于打印的隐式utf-8
转换(什么操作系统?什么级别的Python?什么IDE,如果有的话)。真正的问题是,您希望它打印什么?真正的问题是,你希望它打印什么?