欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

python中實現php的var_dump函數功能

系統 2338 0

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

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

python中實現php的var_dump函數功能_第1張圖片

但是開發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 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這個函數,他是一個人性化輸出的函數,會將要輸出的內容用程序員喜歡的方式輸出在屏幕上。參閱這篇文章比較好理解://www.jb51.net/article/60143.htm


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 天堂一区二区三区 | 日韩啊v| 亚洲精品国产综合一线久久 | jizz日本女人| 国产亚洲蜜芽精品久久 | 99久久精品国产片久人 | 亚洲一级免费视频 | 91啦视频在线观看 | 亚洲热综合 | 毛片看看| 久久视频一区 | 九九这里只有精品视频 | 一级做a爰片久久毛片人呢 达达兔午夜起神影院在线观看麻烦 | 免费视频片在线观看大片 | 久久久成 | 91精品国产综合久久婷婷香蕉 | 免费av大全 | 91精品视频在线播放 | 一区二区三区在线电影 | 电影长安道无删减免费看 | 午夜大片免费男女爽爽影院久久 | 久久久久久久国产精品电影 | 一级毛片欧美 | 欧美精品成人a多人在线观看 | 日本大学生免费一级一片 | 久久宗合色 | 日韩亚洲视频 | 人人澡人人澡人人澡 | 亚洲精品一区二区三区精华液 | 久久综合日韩亚洲精品色 | 偿还的影视高清在线观看 | www.久久久.com| 国产精品99爱免费视频 | 国产换爱交换乱理伦片 | 在线成人免费观看视频 | 亚欧美| 日本高清久久 | 精品久久久久久久人人人人传媒 | 精品久久亚洲 | 日本免费大片免费视频 | 久久无码人妻中文国产 |