欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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中調試時非常實用,本文介紹在Python中實現(xiàn)這個函數(shù),需要的朋友可以參考下

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

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

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

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

后來又想到了vars 函數(shù),vars函數(shù)是python的內(nèi)建函數(shù),專門用來輸出一個對象的內(nèi)部信息。但這個對象所屬的類中必須有__dict__函數(shù)。一般的類都有這個dict,但像[]和{}等對象就不存在這個dict,這樣調用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.dbjr.com.cn/article/60143.htm

相關文章

  • 用Python的Django框架完成視頻處理任務的教程

    用Python的Django框架完成視頻處理任務的教程

    這篇文章主要介紹了用Python的Django框架完成視頻處理任務的教程,包括用戶的視頻上傳和播放以及下載功能的實現(xiàn),需要的朋友可以參考下
    2015-04-04
  • pycharm命令終端運行python文件以及傳遞參數(shù)方式

    pycharm命令終端運行python文件以及傳遞參數(shù)方式

    這篇文章主要介紹了pycharm命令終端運行python文件以及傳遞參數(shù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • python實現(xiàn)自主查詢實時天氣

    python實現(xiàn)自主查詢實時天氣

    這篇文章主要為大家詳細介紹了python實現(xiàn)自主查詢實時天氣,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • 使用Python進行數(shù)據(jù)可視化

    使用Python進行數(shù)據(jù)可視化

    本文主要介紹了使用Python進行數(shù)據(jù)可視化,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • Python使用StringIO和BytesIO讀寫內(nèi)存數(shù)據(jù)

    Python使用StringIO和BytesIO讀寫內(nèi)存數(shù)據(jù)

    這篇文章介紹了Python使用StringIO和BytesIO讀寫內(nèi)存數(shù)據(jù)的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • Python的Django REST框架中的序列化及請求和返回

    Python的Django REST框架中的序列化及請求和返回

    這篇文章主要介紹了Python的Django REST框架中的序列化及請求和返回,使用Django REST來實現(xiàn)RESTful web service非常方便和強大,需要的朋友可以參考下
    2016-04-04
  • python內(nèi)置函數(shù)zip詳解

    python內(nèi)置函數(shù)zip詳解

    這篇文章主要為大家介紹了python內(nèi)置函數(shù)zip,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • 使用python創(chuàng)建生成動態(tài)鏈接庫dll的方法

    使用python創(chuàng)建生成動態(tài)鏈接庫dll的方法

    這篇文章主要介紹了使用python創(chuàng)建生成動態(tài)鏈接庫dll的方法,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • 一步步教你用Python畫五彩氣球

    一步步教你用Python畫五彩氣球

    這篇文章主要給大家介紹了關于如何用Python畫五彩氣球的相關資料,主要是用turtle庫自帶的畫筆turtle.Turtle()來繪制氣球,文中給出了詳細的實例代碼,需要的朋友可以參考下
    2023-06-06
  • 詳解Python 中的短路評估

    詳解Python 中的短路評估

    短路是指當表達式的真值已經(jīng)確定時終止布爾運算,Python 解釋器以從左到右的方式計算表達式,這篇文章主要介紹了Python 中的短路評估,需要的朋友可以參考下
    2023-06-06

最新評論