1

外部エディター (PyScripter) で、.py ファイルに関数を記述しました。早い段階で IDLE エディターにロードし、PyScripter で関数を書き続け、ロードした .py で F5 を使用して (IDLE .py エディターで再ロードせずに) IDLE で実行することもありました。

では、問題へ。.py の処理が完了し、最後にもう一度 PyScripter に保存して IDLE で実行しました。最後の微調整をしなければならないことがわかりました。古い #$$ バージョンを持っていた IDLE エディターで誤って微調整を行い、それを保存しました。PyScripter はまだ実行中です。ディスク上でファイルが変更されたことに気付くと、ファイルをリロードします。すべてのデータがなくなりました。

ただし、IDLE で保存された .py をリロードせずに間違いに気付いたので、関数はメモリ内で引き続き使用できます。IDLE シェルから戻すことはできますか? 私はこれについて精神的に行きます...

4

1 に答える 1

0

あなたは試すことができinspect.getsource()ます。ただし、常に機能するとは限りません。

ipythonの例:

In [1]: import inspect

In [2]: def foo():
   ...:     print 'hello'
   ...:     

In [3]: inspect.getsource(foo)
Out[3]: u"def foo():\n    print 'hello'\n"

ipythonでは、inspectをインポートする前または後に関数を定義するかどうかは関係ありません。

In [1]: def foo():
   ...:     print 'hello'
   ...:     

In [2]: import inspect

In [3]: inspect.getsource(foo)
Out[3]: u"def foo():\n    print 'hello'\n"

必要最低限​​のcpythonインタラクティブプロンプトでは、まったく機能しませんでした。

Python 2.7.3 (default, Jul 26 2012, 19:08:05) 
Type "help", "copyright", "credits" or "license" for more information.
>>> def foo():
...   print 'hello'
... 
>>> import inspect
>>> inspect.getsource(foo)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/inspect.py", line 701, in getsource
    lines, lnum = getsourcelines(object)
  File "/usr/local/lib/python2.7/inspect.py", line 690, in getsourcelines
    lines, lnum = findsource(object)
  File "/usr/local/lib/python2.7/inspect.py", line 538, in findsource
    raise IOError('could not get source code')
IOError: could not get source code
>>> def bar():
...   print 'second try'
... 
>>> inspect.getsource(bar)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/inspect.py", line 701, in getsource
    lines, lnum = getsourcelines(object)
  File "/usr/local/lib/python2.7/inspect.py", line 690, in getsourcelines
    lines, lnum = findsource(object)
  File "/usr/local/lib/python2.7/inspect.py", line 538, in findsource
    raise IOError('could not get source code')
IOError: could not get source code

IDLEは基本的に使用しないので、試しませんでした。インタラクティブな実験にはipythonを、編集にはemacsを好みます。

于 2012-12-20T02:30:15.357 に答える