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

python 遞歸調(diào)用返回None的問題及解決方法

 更新時(shí)間:2020年03月16日 10:19:44   作者:Clannad_niu  
這篇文章主要介紹了python 遞歸調(diào)用返回None的問題,本文通過實(shí)例代碼給大家記錄了解決方案,代碼簡(jiǎn)單易懂,非常不錯(cuò)對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

今天在做python獲取郵件時(shí)需要遞歸調(diào)用解析函數(shù)才可以解析郵件內(nèi)容,最后想要將解析出的內(nèi)容返回時(shí)發(fā)現(xiàn)返回的是None 可以內(nèi)容卻可以打印出來,很費(fèi)解。后來在網(wǎng)上找到了解決方案,才想明白 在這里記錄下。

原文:http://www.dbjr.com.cn/article/182765.htm

原始測(cè)試代碼如下:

def print_info(msg, indent=0):
 if indent == 0:
  for header in ['From', 'To', 'Subject']:
   value = msg.get(header, '')
   if value:
    if header == 'Subject':
     value = decode_str(value)
    else:
     hdr, addr = parseaddr(value)
     name = decode_str(hdr)
     value = u'%s <%s>' % (name, addr)
   print('%s%s: %s' % (' ' * indent, header, value))
 
 if msg.is_multipart():
  parts = msg.get_payload()
  for n, part in enumerate(parts):
   print('%spart %s' % (' ' * indent, n))
   print('%s--------------------' % (' ' * indent))
   print_info(part, indent + 1) #這里是沒有返回的
 else:
  content_type = msg.get_content_type()
  if content_type=='text/plain' or content_type=='text/html':
   content = msg.get_payload(decode=True)
   charset = guess_charset(msg)
   if charset:
    content = content.decode(charset)
   print('%sText: %s' % (' ' * indent, content))
   return content
  else:
   print('%sAttachment: %s' % (' ' * indent, content_type))

這樣的方式返回的content是None。

修改方式如下:

def print_info(msg, indent=0):
 if indent == 0:
  for header in ['From', 'To', 'Subject']:
   value = msg.get(header, '')
   if value:
    if header == 'Subject':
     value = decode_str(value)
    else:
     hdr, addr = parseaddr(value)
     name = decode_str(hdr)
     value = u'%s <%s>' % (name, addr)
   print('%s%s: %s' % (' ' * indent, header, value))
 
 if msg.is_multipart():
  parts = msg.get_payload()
  for n, part in enumerate(parts):
   print('%spart %s' % (' ' * indent, n))
   print('%s--------------------' % (' ' * indent))
   return print_info(part, indent + 1) 在遞歸調(diào)用時(shí)直接返回函數(shù)本身
 else:
  content_type = msg.get_content_type()
  if content_type=='text/plain' or content_type=='text/html':
   content = msg.get_payload(decode=True)
   charset = guess_charset(msg)
   if charset:
    content = content.decode(charset)
   print('%sText: %s' % (' ' * indent, content))
   return content
  else:
   print('%sAttachment: %s' % (' ' * indent, content_type))

區(qū)別在于遞歸調(diào)用的時(shí)候,要將函數(shù)本身一起返回。這樣就可以將最后的遞歸結(jié)果一點(diǎn)一點(diǎn)返回,可以解決返回的結(jié)果為None的問題。

總結(jié)

到此這篇關(guān)于python 遞歸調(diào)用返回None的問題及解決方法的文章就介紹到這了,更多相關(guān)python 遞歸返回None 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • PyTorch搭建一維線性回歸模型(二)

    PyTorch搭建一維線性回歸模型(二)

    這篇文章主要為大家詳細(xì)介紹了PyTorch搭建一維線性回歸模型,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • 淺談keras通過model.fit_generator訓(xùn)練模型(節(jié)省內(nèi)存)

    淺談keras通過model.fit_generator訓(xùn)練模型(節(jié)省內(nèi)存)

    這篇文章主要介紹了淺談keras通過model.fit_generator訓(xùn)練模型(節(jié)省內(nèi)存),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • python開發(fā)游戲的前期準(zhǔn)備

    python開發(fā)游戲的前期準(zhǔn)備

    在本篇文章中我們給大家分享了關(guān)于python開發(fā)游戲的前期準(zhǔn)備以及用到的工具等內(nèi)容,需要的朋友們跟著參考下。
    2019-05-05
  • Tensorflow累加的實(shí)現(xiàn)案例

    Tensorflow累加的實(shí)現(xiàn)案例

    今天小編就為大家分享一篇Tensorflow累加的實(shí)現(xiàn)案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • python程序中的線程操作 concurrent模塊使用詳解

    python程序中的線程操作 concurrent模塊使用詳解

    這篇文章主要介紹了python程序中的線程操作 concurrent模塊使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • python實(shí)現(xiàn)數(shù)組平移K位問題

    python實(shí)現(xiàn)數(shù)組平移K位問題

    這篇文章主要介紹了python實(shí)現(xiàn)數(shù)組平移K位問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • python返回?cái)?shù)組索引的方法實(shí)現(xiàn)

    python返回?cái)?shù)組索引的方法實(shí)現(xiàn)

    本文介紹了三種在Python中返回?cái)?shù)組索引的方法,主要包括index()方法,enumerate()方法及使用numpy庫的argwhere()函數(shù),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • Python中turtle庫常用代碼匯總

    Python中turtle庫常用代碼匯總

    Turtle庫是Python語言中一個(gè)很流行的繪制圖像的函數(shù)庫,下面這篇文章主要給大家介紹了關(guān)于Python中turtle庫常用代碼的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • Python調(diào)用接口合并Excel表代碼實(shí)例

    Python調(diào)用接口合并Excel表代碼實(shí)例

    這篇文章主要介紹了Python調(diào)用接口合并Excel表代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • python讀取大型csv文件的操作方法(降低內(nèi)存占用)

    python讀取大型csv文件的操作方法(降低內(nèi)存占用)

    遇到大型的csv文件時(shí),pandas會(huì)把該文件全部加載進(jìn)內(nèi)存,從而導(dǎo)致程序運(yùn)行速度變慢,本文提供了批量讀取csv文件、讀取屬性列的方法,減輕內(nèi)存占用情況,文中有詳細(xì)的代碼示例,需要的朋友可以參考下
    2024-03-03

最新評(píng)論