2011-10-05 82 views
0

我導入函數從包:爲什麼一個函數被執行兩次?

from read_video import getData 

我寫了這個功能。它具有以下結構:

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

然後我調用這個函數:

video_data = getData() 

在我看到的畫面;

start 
end 
start 
end 

我以爲這可能是我的函數調用自己。但事實並非如此。我也認爲我的函數調用一個函數來調用我的函數。但情況並非如此。有人知道可能是這種奇怪行爲的原因嗎?

+2

這是完整的代碼?你調用getData()和getVideo()被稱爲? – rocksportrocker

+3

你確實意識到人們只能猜測?你提供的代碼太少。 – Geo

+0

@rocksportrocker在原始問題中犯了一個錯誤。它總是'getData'。 – Roman

回答

1

代碼修改本:

import pdb 

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

一旦你在解釋器的提示下降,按w看到一個呼叫跟蹤。這應該可以幫助你解決問題。

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(不是包)中的一次額外執行。

相關問題