Почему функция выполняется два раза? - PullRequest
0 голосов
/ 05 октября 2011

Я импортирую функцию из пакета:

from read_video import getData

Я написал эту функцию. Он имеет следующую структуру:

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

Тогда я вызываю эту функцию:

video_data = getData()

На экране вижу;

start
end
start
end

Я подумал, что это могут быть вызовы моей функции. Но это не так. Я также подумал, что моя функция вызывает функцию, которая вызывает мою функцию. Но это тоже не тот случай. Кто-нибудь знает, что может быть причиной такого странного поведения?

Ответы [ 2 ]

1 голос
/ 05 октября 2011

Измените код следующим образом:

import pdb

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

И как только вы пропустите приглашение переводчика, нажмите w, чтобы увидеть трассировку вызова.Это должно помочь вам разобраться.

0 голосов
/ 05 октября 2011

Я получил ответ на свой вопрос. Мой код был сохранен в файле dimension.py. Итак, я называю программу по python dimension.py. В dimension.py у меня была следующая строка:

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

Проблема заключалась в том, что пакет также находился в файле с именем dimension.py (файл с тем же именем, но расположенный в другом каталоге). Импорт из dimension.py вызвал одно дополнительное выполнение программы в dimension.py (не в пакете).

...