2016-12-24 13 views
0

np.zeros(x)がfloat xをintに自動的に変換するかどうか覚えていないので、IDLEで試しました。私が最初に得たのは、以前の同じセッションで実行したスクリプトを参照する警告メッセージでした。「整数の代わりに非整数の番号を使用すると、将来エラーが発生します」という警告が表示されます。なぜPythonは私にこの奇妙なVisible Deprecation Warningを与えましたか?ここで学ぶべきことは何ですか?

もう一度試しましたが、警告は繰り返されず、配列は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シェルはPythonをラップするだけで、numpyパッケージやscipyパッケージからの警告とは何の関係もありません。同じコードをPythonで直接実行する場合や、警告を抑制しないIDEであれば、わずかに異なる書式を使用して同じメッセージが表示されるはずです。 –

+0

配列は、初めて行を実行したときにインスタンス化されている必要があります。警告は実行を妨げません。 –

+1

2番目のサブクエリにライン参照について尋ねたことがあります。それはIDLE固有のバグかもしれません。 2.7.zのバグ修正リリースは何を実行していますか? –

答えて

2

"将来的に"は、 "将来のバージョンのNumPy"を意味します。これまでのところ、エラーではなく警告が表示されます。割り当てが行われました(2回目にコマンドを実行する必要はなく、equatorはすでに割り当てられていました)。実行は正常に進められました。

しかし、今後のバージョンのNumPyではエラーが発生し、実行が中止されます。

警告は同じセッション内で再度繰り返されません。ユーザーにあまりにも多くの人を押しつぶすことを意図したロジックがあります。

私はライン参照を説明できません。私にとっては__main__:1:を指しています。

+0

ありがとうございます説明に感謝します - 私はIDLEがこれを1回か2回行うことを見たと思います - 適用されないような警告やエラーにいくつかの情報を組み込みます。心配するものではないようです。 – uhoh

関連する問題