为什么问号在iPython中并不总是有效?

时间:2016-03-25 19:47:28

标签: ipython

有时当我输入问号时,就像这样:

data["mass"]?

我收到语法错误。我必须使用help(data["mass"])才能获取信息。任何想法如何使这项工作?

1 个答案:

答案 0 :(得分: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

  

如果找到具有 getattr 挂钩的对象,则对NAME.NAME ...表单的评估可能会导致执行任意应用程序定义的代码。由于应用程序(或用户)有责任启用此功能,因此我认为这是可接受的风险。不评估更复杂的表达式(例如函数调用或索引操作)。

scipy.sparse矩阵是定义自己的__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返回not found的情况下,

?似乎会返回syntax error

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.