私はPythonで課題を勉強しようとしていますが、これで混乱しました。インターンのpython値
>>> a=343434;b=343434
>>> a is b
True
>>> a=343434
>>> b=343434
>>> a is b
False
私はPythonで課題を勉強しようとしていますが、これで混乱しました。インターンのpython値
>>> a=343434;b=343434
>>> a is b
True
>>> a=343434
>>> b=343434
>>> a is b
False
Pythonインタプリタはスマートです。最初の行では、両方のa
とb
と同時にに割り当ての定義を見ることができるので、それは考えている ':「男は、私は彼らがメモリを節約するために、同じ場所を指すことができます」と、そうします。それはあなたのコードあなたのコードを最適化することができます。第2のケースで
これは、これらのオブジェクトが同じでない理由です。
これは「ライブモード」でのみ機能します(インタープリタにコマンドを挿入してすぐに処理する場合)。あなたがファイルに
a=343434
b=343434
print a is b
を入れて(たとえば、test.py
)をしてからpython test.py
を実行した場合、それは(少なくともPythonの2.7.10で)出力True
、最初の場合のように、それは全体を見ることができます、ので、一度にコードを作成し、いくつかの最適化を実行します。
最初のものは本当ですか?私はあなたが、それをGoogleで検索して、このリンクを得たと私は同じ結果を得たの両方 – elelias
に虚偽取得:私が得たhttp://stackoverflow.com/questions/2988017/string-comparison-in-python-is-vs – Tico
@elelias Python 2.7とPython 3.5では異なる結果が得られます。 –