IPython セッションでは、通常、カスタム関数を定義します...問題は、これらの関数の実際のコードを見たい場合があることです。これまでのところ、これを表示する方法を見つけることができませんでした。を使用していますか?と ??単純に「動的に生成された関数。利用可能なソース コードがありません。」を返します。ユーザー定義関数のソース コードを表示する方法はありますか?
質問する
878 次
4 に答える
2
履歴を検索してみてください:
In [22]: for l in _ih:
....: if l.startswith('def f'):
....: print l
....:
....:
def f():
a= 1
b = 2
return a*b
これは非常に基本的なものですが、より良いバージョンでは履歴を解析/実行し、関数を元に戻すことができるかどうかを確認します
于 2012-04-18T18:09:29.193 に答える
2
対話的に定義された関数のソースを探している場合は、iPython の履歴で最新の定義を見つけることができます。
[i for (i, l) in enumerate(_ih) if l.startswith('def foo(')][-1]
次に、その行を編集できます。
%edit 42
関数定義を含むメモ帳または別のテキスト エディターが開きます。
または、ファイルに保存できます。
%save foo.py 42
于 2012-04-18T18:10:23.750 に答える
2
私はpython 2.7.4とiPython 0.13.2を使用しています。
??
関数名の前に使用して、iPython で動的に作成された関数のソースを確認できます。
In [8]: ??sort_words
Type: function
String Form:<function sort_words at 0x189b938>
File: /tmp/ipython_edit_yc1TIo.py
Definition: sort_words(s)
Source:
def sort_words(s):
x = re.findall(r'\W+(\w+)', s)
x.sort()
for i in x:
print i
これは、iPython の新しいバージョンで利用できるようになったのでしょうか? どのバージョンを使用していますか?
于 2013-09-29T17:54:51.830 に答える
0
次の場合、IPython の関数は動的に生成されたと見なされます。
それらはメタプログラムされています-それらは別の機能によって作成されます。この場合、ソース コードはありません。存在しないだけです。
それらは作成された別の名前空間で参照されており、元の名前空間に関する情報はありません。この場合、元の場所を見つけて実行しますか?? そこから。
于 2013-09-29T19:17:15.633 に答える