2016-03-25 9 views

答えて

1

私は?(および??)が式ではなく変数または関数名に適用されたときに最も効果的だと分かります。

x = data['mass'] 
x? 

y = 1.232 
y? 

z = 'astring' 
z? 

正常に機能する表現はいくつかありますが、一般的にはありません。私は、関数に関する情報を得るのにもっとも使用します。任意のオブジェクトではありません。上記の表現では、y?は私にfloattype(y)クリエイターの情報を与えます。私は?疑い


はコンプリータ

http://ipython.readthedocs.org/en/stable/api/generated/IPython.core.completer.html

をNAME.NAMEの評価を使用して...形態は、任意のアプリケーション定義されたコードを実行させる可能性がある場合を持つオブジェクトgetattrフックが見つかりました。この機能を有効にするのはアプリケーション(またはユーザー)の責任であるため、私はこれを許容可能なリスクと考えています。より複雑な式(関数呼び出しや索引操作など)は評価されません。

マトリクスは、それ自身__getattr__を定義するクラスの例です。 %magic

%pinfo: 
    Provide detailed information about an object. 

    '%pinfo object' is just a synonym for object? or ?object. 
%pinfo2: 
    Provide extra detailed information about an object. 

    '%pinfo2 object' is just a synonym for object?? or ??object. 

%pinfoから

?戻りsyntax error例でnot foundを返すように表示されます。 REFについて

In [265]: %pinfo data['mass'] 
Object `data['mass']` not found. 
In [266]: %pinfo x+1 
Object `x+1` not found. 
In [267]: %pinfo data.get 
Type:  builtin_function_or_method 
String form: <built-in method get of dict object at 0xb2d700ac> 
Docstring: D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None. 
+1

[ドキュメントは言う(https://ipython.org/ipython-doc/2/interactive/reference.html#dynamic-object-info)* "(動的オブジェクト情報機能なお?/ ??、%pdoc、%pfile、%pdef、%psource)はオブジェクト属性や変数に直接作用します。たとえば、import osを実行した後、os.path.abspath ??を使用できます。私は、インデックスルックアップは含まれていないと思います。 –

+0

アトリビュートルックアップは、新しいものを作成する副作用がないことを意味します。しかし、インデックス作成は時間がかかる(リストをスライスする)、またはオブジェクトを変更する( 'defaultdict')新しいオブジェクトを作成する可能性があります。その属性のルックアップがこれらのことを行うことができないということは、厳密には真実ではないが、これが当てはまると予想される。 – Dunes

+0

@Dunes:属性の検索は高価なものや、インデックス作成のような副作用を伴うことがあります。例えば、 'numpy.matrix'インスタンスの' I'属性は、潜在的に非常に高価な行列逆計算を必要とします。 – user2357112

関連する問題