def文件脚本与外部调用之间的结果不同

时间:2018-03-13 22:34:21

标签: python python-2.7 numpy ipython spyder

我在Spyder 3.2.4 IDE中开发了一些数字运算代码,当我检查结果时,我感到很困惑。

功能代码是

  services.Configure<ForwardedHeadersOptions>(options =>
  {
       options.ForwardedHeaders = ForwardedHeaders.XForwardedProto;
   });

当我通过def dictWords(dataLength): maxLength = 1. sumLengths = 2. totalWords = 2. while sumLengths < dataLength: maxLength += 1 sumLengths = 2*(maxLength*2**maxLength - 2**maxLength + 1) extraLength = sumLengths - dataLength totalWords = 2**(maxLength+1) - 2 extraWords = np.ceil(extraLength/maxLength) finalWords = totalWords - extraWords return finalWords 从IPython控制台调用它时,dl75a的dl75a = BA.dictWords(75)值为int。但这不是我期望的价值。如果我告诉控制台25,那么我的dl75b = BA.dictWords(75.)值为float - 仍然不对。 (我只期待整数值,其中24.25是唯一的分数并经过extraWords,我在another question上读到np.ceil,我期待float生成,自动为64位。)

但是,如果我将一些脚本maxLength = 1.放在包含功能代码的.py文件中并运行它,那么我得到的浮点数为24.0,这是我所期望的。看起来问题可能与IPython有关,并且可以通过从脚本中调用函数并运行它来回避。但是,如果我尝试从一个单独的文件中的脚本调用该函数,那么我再次得到dl75 = dictWords(75) int的值,显然问题不在于IPython,而是从外部调用函数包含它的文件。

我想到的一个想法是Numpy被导入到模块的顶部,如25,也许这会产生影响。但是,我尝试添加np作为函数定义的第一行,它没有区别 - 来自其他脚本和来自IPython的调用仍然生成import numpy as np int和{ {1}}的{​​1}}。

问题出在哪里,导致相同的功能代码被不同地解释,具体取决于它是否来自包含25的.py文件?

1 个答案:

答案 0 :(得分:1)

在晚上没有任何工作后我发布了这个问题,我关闭了电脑,关闭了Spyder。今天再次开始,我再次尝试了评论中的建议,发现它有效!我责备自己是因为没有先建议再没有尝试,所以我关闭了Spyder,再次启动它,发现它已经没有任何麻烦了;一切都按预期运行。

结论:如果IDE的不同部分以不同的方式运行相同的代码,则可能是当前会话的问题。关闭IDE并再次打开它,或重新启动计算机并再次打开IDE。如果再次出现同样的问题,请查看是否有可以安装的更新,可能会修复该错误。