我开始使用Python编写各种项目的代码(包括Django web开发和Panda3D游戏开发)。

为了帮助我理解发生了什么,我想基本上“看看”Python对象内部,看看它们是如何运行的——比如它们的方法和属性。

假设我有一个Python对象,我需要什么来打印它的内容?这可能吗?


当前回答

有一个很酷的工具叫objexplore。下面是一个简单的例子,关于如何在pandas数据框架上使用它的探索功能。

import pandas as pd
df=pd.read_csv('https://storage.googleapis.com/download.tensorflow.org/data/heart.csv')

from objexplore import explore
explore(df)

将在你的shell中弹出以下内容:

其他回答

尝试使用:

print(object.stringify())

其中object是要检查的对象的变量名。

这将打印出格式化良好的选项卡输出,显示对象中所有键和值的层次结构。

注意:这在python3中有效。不确定它是否适用于早期版本

更新:这并不适用于所有类型的对象。如果你遇到了这些类型之一(比如Request对象),请使用以下类型之一:

dir(对象)

or

进口pprint 然后: pprint.pprint (object.__dict__)

"""Visit http://diveintopython.net/"""

__author__ = "Mark Pilgrim (mark@diveintopython.org)"


def info(object, spacing=10, collapse=1):
    """Print methods and doc strings.

    Takes module, class, list, dictionary, or string."""
    methodList = [e for e in dir(object) if callable(getattr(object, e))]
    processFunc = collapse and (lambda s: " ".join(s.split())) or (lambda s: s)
    print "\n".join(["%s %s" %
                     (method.ljust(spacing),
                      processFunc(str(getattr(object, method).__doc__)))
                     for method in methodList])

if __name__ == "__main__":
    print help.__doc__

我很惊讶居然没人提到帮助!

In [1]: def foo():
   ...:     "foo!"
   ...:

In [2]: help(foo)
Help on function foo in module __main__:

foo()
    foo!

Help让您阅读文档字符串并了解类可能具有的属性,这非常有用。

Pprint和dir一起工作效果很好

如果你有兴趣查看对象myobj对应的函数的源代码,你可以输入iPython或Jupyter Notebook:

myobj ? ?