最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python中實現(xiàn)php的var_dump函數(shù)功能

 更新時間:2015年01月21日 15:57:51   投稿:junjie  
這篇文章主要介紹了python中實現(xiàn)php的var_dump函數(shù)功能,var_dump函數(shù)在PHP中調(diào)試時非常實用,本文介紹在Python中實現(xiàn)這個函數(shù),需要的朋友可以參考下

最近在做python的web開發(fā)(原諒我的多變,好東西總想都學著。。。node.js也是),不過過程中總遇到些問題,不管是web.py還是django,開發(fā)起來確實沒用php方便,畢竟存在的時間比較短,很多不完善的地方。

比如我在調(diào)試php中最常用的函數(shù),var_dump,在python里找不到合適的替代函數(shù)。php中var_dump是一個特別有用的函數(shù),它可以輸出任何變量的值,不管你是一個對象還是一個數(shù)組,或者只是一個數(shù)。它總能用友好的方式輸出,我調(diào)試的時候經(jīng)常會需要看某位置的變量信息,調(diào)用它就很方便:

但是開發(fā)python的時候就沒有太好的替代方案。

之前想到repr,但這個函數(shù)只是調(diào)用了對象中的__str__,和直接print obj沒啥區(qū)別。print是打印它,而repr是將其作為值返回。如果對象所屬的類沒有定義__str__這個函數(shù),那么返回的就會是難看的一串字符。

后來又想到了vars 函數(shù),vars函數(shù)是python的內(nèi)建函數(shù),專門用來輸出一個對象的內(nèi)部信息。但這個對象所屬的類中必須有__dict__函數(shù)。一般的類都有這個dict,但像[]和{}等對象就不存在這個dict,這樣調(diào)用vars函數(shù)就會拋出一個異常:

復制代碼 代碼如下:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: vars() argument must have __dict__ attribute

所以后來幾經(jīng)尋找,找到一個個比較好,功能能夠與var_dump類似的函數(shù)如下:

復制代碼 代碼如下:

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 0x2b126000b890>',
 '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 0x2b126000b8d0>',
            'value': 'foobar'},
 'tup': (1, 2, 3, 4)}   

然后github有個開源的module,可以參考:https://github.com/sha256/python-var-dump

說一下pprint這個函數(shù),他是一個人性化輸出的函數(shù),會將要輸出的內(nèi)容用程序員喜歡的方式輸出在屏幕上。參閱這篇文章比較好理解:http://www.fzitv.net/article/60143.htm

相關文章

最新評論

鄂伦春自治旗| 中方县| 甘南县| 湖口县| 渭源县| 普兰店市| 宁波市| 兰溪市| 泸西县| 景宁| 三台县| 柘城县| 兴和县| 昆明市| 南皮县| 普定县| 南投市| 清丰县| 温宿县| 朝阳区| 连州市| 互助| 江源县| 台南县| 怀仁县| 元阳县| 读书| 清河县| 吉林省| 中卫市| 隆林| 巴彦淖尔市| 南皮县| 福建省| 巩义市| 浮梁县| 鲁山县| 屏边| 盐源县| 大余县| 司法|