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

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

 更新時(shí)間:2020年03月16日 10:19:44   作者:Clannad_niu  
這篇文章主要介紹了python 遞歸調(diào)用返回None的問題,本文通過實(shí)例代碼給大家記錄了解決方案,代碼簡單易懂,非常不錯(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.fzitv.net/article/182765.htm

原始測試代碼如下:

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)文章

最新評(píng)論

乌兰县| 迁西县| 大宁县| 汾阳市| 珲春市| 白水县| 南乐县| 南投市| 望谟县| 岳池县| 汤阴县| 平定县| 博湖县| 双流县| 兴安县| 日喀则市| 华宁县| 龙州县| 布拖县| 台前县| 河北省| 察哈| 邹城市| 赤峰市| 临武县| 崇礼县| 神农架林区| 乌拉特前旗| 通海县| 稷山县| 会同县| 青铜峡市| 晋江市| 德昌县| 娱乐| 烟台市| 芒康县| 龙岩市| 安岳县| 雷山县| 皋兰县|