我在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文件?
答案 0 :(得分:1)
在晚上没有任何工作后我发布了这个问题,我关闭了电脑,关闭了Spyder。今天再次开始,我再次尝试了评论中的建议,发现它有效!我责备自己是因为没有先建议再没有尝试,所以我关闭了Spyder,再次启动它,发现它已经没有任何麻烦了;一切都按预期运行。
结论:如果IDE的不同部分以不同的方式运行相同的代码,则可能是当前会话的问题。关闭IDE并再次打开它,或重新启动计算机并再次打开IDE。如果再次出现同样的问题,请查看是否有可以安装的更新,可能会修复该错误。