2016-12-24 36 views
0

我不记得np.zeros(x)是否会自动将浮点数x转换为int,所以我在IDLE中试过。我第一次得到的是一条警告消息,它涉及我在同一会话中早先运行的脚本,然后警告我“使用非整数而不是整数会在将来导致错误”。为什么Python给我这个奇怪的可见弃用警告?有什么东西在这里学习?

我再次尝试了一次,并且警告没有重复,数组按照预期与dtype=float实例化。

为什么会警告说有错误(相对于可能是),并且会是什么?为什么它提到了我今天早些时候运行的脚本中的第一个非空白行,将其嵌入到警告中?

这可能是IDLE如何工作的窗口 - 所以我希望从中学到一些东西。我有read here,我可以压制警告,但我想先了解它的行为。

>>> 
>>> equator = np.zeros(3.14) 

Warning (from warnings module): 
    File "/Users/xxxxxx/Documents/xxxxxx/CYGNSS/CYGNSS TLE interpolator v00.py", line 2 
    CYGNSS_BLOB = """1 41884U 16078A 16350.61686218 -.00000033 00000-0 00000+0 0 9996 
VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future 
>>> 
>>> equator = np.zeros(3.14) 
>>> equator 
array([ 0., 0., 0.]) 
>>> 
+0

IDLE Shell仅包装Python,与numpy或scipy包的警告无关。如果您直接使用Python运行相同的代码,或者在任何不抑制警告的IDE中运行相同的代码,您应该会看到相同的消息,可能是格式稍有不同。 –

+0

阵列应该在您第一次跑线时实例化。警告不应阻止执行。 –

+1

我现在看到你问了关于行参考的第二个子问题。这可能是一个IDLE特定的错误。你正在运行什么特定的2.7.z错误修复版本? –

回答

2

“未来”的意思是“未来版本的NumPy”。到目前为止,您会收到警告,而不是错误。作业已完成(您不需要第二次运行命令,equator已按您的意愿分配),并且执行正常进行。

但是一些未来版本的NumPy会抛出一个错误,停止执行。

警告在同一会话中不再重复;那里有一些逻辑旨在避免唠叨用户太多。

我无法解释行参考;对我来说它指的是__main__:1:

+0

好的,谢谢你的解释 - 有道理,我认为我已经看到IDLE这样做了一次或两次 - 将一些信息纳入似乎不适用的警告或错误中。似乎没有什么可担心的。 – uhoh

相关问题