2012-05-06 3 views
2

変数に割り当てられていないインスタンス化されたオブジェクトを取得できますか? 例えば:変数に割り当てられていないオブジェクトをインスタンス化できますか?

import time 
time.time() 

どのように私はそれのためのメソッドを呼び出すために私の既にインスタンスオブジェクトをつかむことができます。 多分、インスタンス化されたすべての時間オブジェクトのリストを取得して、返されたIDを使って再割り当てすることができますか?

答えて

5

は、対話インタプリタでは最後の計算値は、これを最適化する必要はありません何を最適化するために、悪いの試みのようなにおいが_

>>> import time 
>>> time.time() 
1336296696.824 
>>> _ 
1336296696.824 
+0

涼しい、私はそれを知らなかった。しかし、最後に計算された値がすでに他の値だったとします。それでもそれを保存する方法はありますか?それともすぐにガベージコレクションされますか? – Bentley4

+0

私はそれについてはわかりません... – jamylak

+3

はい、最後のものだけが保存されています。参照されていない他のオブジェクトはガベージコレクションされます。これがPythonのメモリ管理の基本原則です。 – yak

3

として保存されます。

GCはこのようなオブジェクトを処理します。これは、参照カウントが作成された直後にゼロであるため、即時に削除される可能性があります。

これは、参照されていないオブジェクトにアクセスする手段がないことも意味します。

+0

私はそれをうまく使っているとは思いません。しかし、私はまだPythonがそのオブジェクトで何をしているのか知りたかったのです。そのような悪い質問でしたか? すべてのオブジェクトが一意のIDを持っている限り、pythonセッションの開始からIDで新しく作成されたオブジェクトをすべて列挙した関数がある可能性があります。そして、そのIDをタイプすることによってオブジェクトが返されることを可能にする別の関数が存在する可能性があります。その後、変数に代入することができます。 – Bentley4

5

参照のないオブジェクトは存在しません。 Pythonメモリ管理は、参照カウントによって動作します。オブジェクトには参照が残っていないとすぐに破棄されます。

1

あなたがREPLについて話しているとすれば、IPython(これは私が強くお勧めします)は過去の計算結果にアクセスすることを可能にします。例:

In [1]: 2 * 2 * 2 
Out[1]: 8 

In [2]: _ * 2 
Out[2]: 16 

In [3]: _ * 3 
Out[3]: 48 

In [4]: _1 
Out[4]: 8 

In [5]: _2 
Out[5]: 16 

In [6]: 
関連する問題