为什么函数执行两次?

时间:2011-10-05 09:57:49

标签: python call return execution

我从包中导入一个函数:

from read_video import getData

我写了这个函数。它具有以下结构:

def getData()
   print 'start'
   ...
   print 'end'

然后我调用这个函数:

video_data = getData()

在屏幕上,我看到了;

start
end
start
end

我认为这可能是我的函数调用本身。但事实并非如此。我还以为我的函数调用了一个调用我函数的函数。但事实并非如此。有谁知道这种奇怪行为的原因是什么?

2 个答案:

答案 0 :(得分:1)

将代码修改为:

import pdb

def getData():
  print 'start'
  pdb.set_trace()
  ...

一旦您进入解释器提示,请按w查看通话跟踪。这可以帮助你解决问题。

答案 1 :(得分:0)

我得到了自己问题的答案。我的代码保存在dimension.py文件中。所以,我通过python dimension.py调用该程序。在dimension.py我有以下一行:

sys.path.append('C:\\Users\\me\\datamining\\Dimensions\\')
from dimension import *

问题是该包也在名为dimension.py的文件中(具有相同名称但位于另一个目录中的文件)。从dimension.py导入导致在dimension.py(而不是包)中再执行一次该程序。