gpt4 book ai didi

Python 等同于 Data::Dumper - 转储原始数据结构以供检查?

转载 作者:行者123 更新时间:2023-11-28 17:48:33 26 4
gpt4 key购买 nike

刚接触 Python,我震惊地发现似乎没有明显的方法来正确检查数据结构,您可以使用 Perl 的 Data::Dumper 模块。

例如,pprint 将显示一个对象的 __repr__ 返回值,而不是告诉我该值是一个对象以及它是什么类型的对象。

Data::Dumper 会告诉您确切数据结构包含什么,而不是默默地将对象转换为字符串,这对于数据检查目的来说是绝对无用的。

有没有办法在 Python 中打印数据结构的原始转储?我想我可以自己创建一些东西,基本上它需要做的就是遍历数据结构和 print(type(v), v) 但一定有什么东西可以做得很好吗?

编辑:pprint 解析的是 __repr__,而不是我最初所说的 __str__,至少……通常是这样?

所以,我认为我真正需要的是忽略 __repr__ 定义的 pprint。存在吗?

最佳答案

pprint

from pprint import pprint
pprint(someVar)

好的。我没有更好的答案。我总是使用“pprint”或“pformat”。您可以从字符串输出中推断出类型。我认为磨练从输出中了解类型的技能是可行的方法。

或者如您所说,您自己的 print(type(v), v)

对于 python,哲学似乎是这样的:“不要过多地依赖类型。只需获取一个对象并使用它,让运行时(测试)告诉用户它们是否搞砸了”:http://en.wikipedia.org/wiki/Duck_typing#In_Python


看完评论。

为什么不猴子修补你想看到的类来打印一些有用的东西:

class Person(object):
def __init__(self, name, age):
self.name = name
self.age = age

def __repr__(self):
return "Muahaha"

def main():
s = Person("Santa", 1500)
from pprint import pprint
pprint(s)

print
print ".. Go MONKEYS ..."
print

# Monkey patch the Person class so it prints nice info from now on
Person.__repr__ = lambda p: "<%s name='%s' age=%s>" % (p.__class__.__name__, p.name, p.age)
pprint(s)

if __name__ == '__main__':
main()

-- 输出--

matthew@speedy:~/tmp$ python monkey.py
Muahaha

.. Go MONKEYS ...

<Person name='Santa' age=1500>

关于Python 等同于 Data::Dumper - 转储原始数据结构以供检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14246196/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com