ご注意:これはeval()の使用に関するものではなく、使用され、教えられている本の潜在的な品質(またはその不足)に関するものです。したがって、Pythonではeval()について既に数多くのスレッドがあります。 SOの怒りとdownvotesを招待することを危険にさらすPython - Zelleブックでeval()を使用していますが、間違っていますか?
は、私はそれにもかかわらず念のために、この質問をすることを決めました。私と一緒に抱きしめてください。私はこの特定の質問のためにGoogleとSO自体を試してきましたが(あなたが見るように)、何も得られませんでした。私は盲目になるかもしれない。
この質問は、悪名高いeval()関数の使用についてです。 http://www.amazon.com/Python-Programming-Introduction-Computer-Science/dp/1590282418/ref=pd_sim_b_3
は技術的には、それはプログラミング言語としてPythonを使用していますCS1本です:ジョン・Zelleによって比較的よく知られている(とよく見直し、あなたが見ることができるように)本があり
。十分な意味では、そのようなものは著者の肩からの責任を取り除いています(「やあ、ここでは広範なものを教えようとしていますが、これらの構文とセキュリティの詳細すべてを教えようとしていません」)非常に最初の例で、xは整数であるべきであり、従って、我々は、INTにユーザ入力を変換する必要が
x = eval(input("Enter your number: "))
の使用。
私はPython 2.7.4を使用しています。この本はPython 3に関するものなので、print()とinput()とeval()の最初からかなりの問題に直面していました。例を得るための研究私の研究の過程では、Pythonのeval()に関する多くの意見を読んだことがあります。ほとんどの場合、セキュリティリスク、不必要な技術的オーバーヘッドなどがあります。ユーザの質問は、(wxPythonのプロジェクトを行う際にeval()を使用して約があった)多くの精巧だったので、私は私の場合、その例間の総類似性を保証することはできませんが、それでも...
だから私はあまりにも本書には遠すぎるわけではないが、もう少し後で、論者の本質に言及していないeval()の使用法について説明したところに達した。彼は基本的に私が言ったことを言った:私たちは最終的にintである必要があるので、ここでそれを行う便利な方法です。そして彼はそれをずっと使っているようだ。 、右の初めから、著者は、このような間違いをした場合(?または、それは間違いではありません、私はここで何かが足りない可能性があります)、それはから学ぶ価値がある本です:
私の質問はこれですか?私はZelle氏がCSの素晴らしい教師だと信じていますが、彼が望んでいるかどうかに関わらず、人々はアルゴリズムとプログラミング技術に加えて、彼の本からPythonを学びます。だから、Pythonコミュニティでこのような一見普遍的な問題を黙っている本からPythonを学ぶ価値はあるのだろうか? Zelle氏がPythonのハッカーであり、その秘密をすべて明らかにすることは望んでいませんが、これらのような細部は自己教える/自己学習する人を作り、壊すことはありません。この学習教材に関してあなたのアドバイスは何ですか?
P.S.一方、(無意識のうちに)私は研究と実験のかなりのビットを行う作ることは最初から
:-)かなりクールですありがとうございます!
私はevalがJavaScriptの中で悪いと思った。 –
@JasonSperskeどこでも悪い – jamylak
int()の代わりにeval()が誤っているようだ。 –