【问题标题】:Why a function is executed two times?为什么一个函数会执行两次?
【发布时间】:2011-12-01 08:30:00
【问题描述】:

我从包中导入一个函数:

from read_video import getData

我写了这个函数。它的结构如下:

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

然后我调用这个函数:

video_data = getData()

在我看到的屏幕上;

start
end
start
end

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

【问题讨论】:

  • 这是完整的代码吗?你叫 getData() 和 getVideo() 叫???
  • 你知道人们只能猜测吗?你提供的代码太少了。
  • @rocksportrocker 在原始问题中我犯了一个错误。它总是getData
  • 使用 python 调试器并单步调试您的代码......
  • 仅供参考,windows 支持正斜杠。因此,没有充分的理由在硬编码路径中使用反斜杠。但如果这样做,请使用 r'strings' 而不是 'strings',因为您不必转义这些字符串中的每个反斜杠(尾随的反斜杠除外)

标签: python call return execution


【解决方案1】:

将代码修改为:

import pdb

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

一旦您进入解释器提示,请按 w 以查看呼叫跟踪。这应该可以帮助您解决问题。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-19
      • 1970-01-01
      • 2020-02-23
      • 2019-04-29
      • 2016-11-01
      • 2016-10-07
      相关资源
      最近更新 更多