Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么';setprofile';打印这个_Python_Sys - Fatal编程技术网

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,如果有的话)。

真正的问题是,您希望它打印什么?真正的问题是,你希望它打印什么?