最近在做python的web开发(原谅我的多变,好东西总想都学着。。。node.js也是),不过过程中总遇到些问题,不管是web.py还是django,开发起来确实没用php方便,毕竟存在的时间比较短,很多不完善的地方。

比如我在调试php中最常用的函数,var_dump,在python里找不到合适的替代函数。php中var_dump是一个特别有用的函数,它可以输出任何变量的值,不管你是一个对象还是一个数组,或者只是一个数。它总能用友好的方式输出,我调试的时候经常会需要看某位置的变量信息,调用它就很方便:

但是开发python的时候就没有太好的替代方案。

之前想到repr,但这个函数只是调用了对象中的__str__,和直接print obj没啥区别。print是打印它,而repr是将其作为值返回。如果对象所属的类没有定义__str__这个函数,那么返回的就会是难看的一串字符。

后来又想到了vars 函数,vars函数是python的内建函数,专门用来输出一个对象的内部信息。但这个对象所属的类中必须有__dict__函数。一般的类都有这个dict,但像[]和{}等对象就不存在这个dict,这样调用vars函数就会抛出一个异常:

复制代码 代码如下:

Traceback (most recent call last):

File "", line 1, in

TypeError: vars() argument must have __dict__ attribute

所以后来几经寻找,找到一个个比较好,功能能够与var_dump类似的函数如下:

复制代码 代码如下:

def dump(obj):

'''return a printable representation of an object for debugging'''

newobj=obj

if '__dict__' in dir(obj):

newobj=obj.__dict__

if ' object at ' in str(obj) and not newobj.has_key('__type__'):

newobj['__type__']=str(obj)

for attr in newobj:

newobj[attr]=dump(newobj[attr])

return newobj

这是使用方式:

复制代码 代码如下:

class stdClass(object): pass

obj=stdClass()

obj.int=1

obj.tup=(1,2,3,4)

obj.dict={'a':1,'b':2, 'c':3, 'more':{'z':26,'y':25}}

obj.list=[1,2,3,'a','b','c',[1,2,3,4]]

obj.subObj=stdClass()

obj.subObj.value='foobar'

from pprint import pprint

pprint(dump(obj))

最后输出是:

复制代码 代码如下:

{'__type__': '<__main__.stdclass object at>',

'dict': {'a': 1, 'c': 3, 'b': 2, 'more': {'y': 25, 'z': 26}},

'int': 1,

'list': [1, 2, 3, 'a', 'b', 'c', [1, 2, 3, 4]],

'subObj': {'__type__': '<__main__.stdclass object at>',

'value': 'foobar'},

'tup': (1, 2, 3, 4)}

然后github有个开源的module,可以参考:https://github.com/sha256/python-var-dump

说一下pprint这个函数,他是一个人性化输出的函数,会将要输出的内容用程序员喜欢的方式输出在屏幕上。参阅这篇文章比较好理解:http://www.zzvips.com/article/67701.html

python dump函数_python中实现php的var_dump函数功能相关推荐

  1. python中dump函数_python中实现php的var_dump函数功能

    最近在做python的web开发(原谅我的多变,好东西总想都学着...node.js也是),不过过程中总遇到些问题,不管是web.py还是django,开发起来确实没用php方便,毕竟存在的时间比较短 ...

  2. python中延时函数_python中实现延时回调普通函数示例代码

    python中实现延时回调普通函数示例代码 这篇文章主要给大家介绍了关于python中实现延时回调普通函数的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的 ...

  3. python数据处理常用函数_Python中常用操作字符串的函数与方法总结

    Python中常用操作字符串的函数与方法总结 这篇文章主要介绍了Python中常用操作字符串的函数与方法总结,包括字符串的格式化输出与拼接等基础知识,需要的朋友可以参考下 例如这样一个字符串 Pyth ...

  4. python匿名函数调用_python中引用局部变量的匿名函数

    from functools import partial i = 0 f0 = partial(callback, i) i = 1 f1 = partial(callback, i) f0() # ...

  5. python sep函数_Python中带有print()函数的sep参数

    python sep函数 sep parameter stands for separator, it uses with the print() function to specify the se ...

  6. python中math计算平方根的函数_Python中Numpy和Math常用函数性能对比

    numpy是如今数据分析领域离不开的Python第三方工具库,它和Python自带的math库中都有一些基础的数学函数,比如指数.对数.三角函数等.在需要使用这些函数的时候,到底该用numpy还是ma ...

  7. python中字典的常用函数_python中得字典和常用函数总结

    字典是python中一种常见得数据类型,用{}表示,并且以键值对得形式存放数据. dic={},其中得key键值是不可变得,类型可以是字符串.其中,列表,字典不可以作为键,键值是不可变得.字符串,元组 ...

  8. python中fetchall函数_python中查询数据库时fetchone()函数和fetchall()函数的区别

    我们在用python操作数据库的时候,经常会碰见两个函数:fetchone()和fetchall() 刚开始学习的时候可能会搞不清楚他们两个的区别 其实非常简单 首先fetchone()函数它的返回值 ...

  9. python中endswith函数_Python中的startswith和endswith函数使用实例

    在Python中有两个函数分别是startswith()函数与endswith()函数,功能都十分相似,startswith()函数判断文本是否以某个字符开始,endswith()函数判断文本是否以某 ...

最新文章

  1. java 反序列化漏洞 利用思路简介
  2. windows系统下实现Redis的配置与连接操作
  3. 数据仓库专题(6)-数据仓库、主题域、主题概念与定义
  4. C语言 · 出栈次序
  5. 陕西省2021年高考成绩位次查询,2021年陕西高考个人排名怎么查询,陕西高考成绩排名查询方法...
  6. 一个光标绘制问题的解决过程
  7. IDEA创建GIT分支并提交
  8. 算法学习_简单递归算法
  9. webService发布在IIS服务器上
  10. 物业收费管理系统c语言编程,C语言程序设计-物业管理系统.doc
  11. tps协议和onvif协议_摄像头ONVIF协议,到底啥是ONVIF,又是啥意思?
  12. stm32电容触摸按键的实现
  13. lvds接口屏线安装图解_lvds液晶屏幕接口详解
  14. 过去的Tony老师你爱理不理,现在的Tony老师你高攀不起
  15. 如何安装PrCC2019
  16. IESM项目实训三——语音合成工具类
  17. 清华大学推荐:这32本书籍你看过几本?
  18. 中国联通将 900MHz 频段频谱资源重耕用于 5G 系统,更有利用把5G网络覆盖到边远地区的每一寸土地
  19. 咬定青山不放松,立根原在破岩中。千磨万击还坚劲,任尔东南西北风!
  20. 橘子学java之java中的协程

热门文章

  1. Linux命令行与shell脚本编程大全:第2版
  2. linux Mysql 安装
  3. Error 0162 - Setup data integrity check failure after updating BIOS via Thinkvantage
  4. 在mybatis中模糊查询有三种写法
  5. RabbitMQ 异常与任务分发
  6. __bridge 使用注意
  7. 【python】解压文件
  8. JS魔法堂:mmDeferred源码剖析
  9. lazyload.js实现图片异步延迟加载
  10. php 的webservice类库NuSoap介绍