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

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

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

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

原文:http://m.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ù)本身
 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ù)本身一起返回。這樣就可以將最后的遞歸結(jié)果一點一點返回,可以解決返回的結(jié)果為None的問題。

總結(jié)

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

相關(guān)文章

最新評論

钦州市| 西平县| 星子县| 广丰县| 普洱| 福泉市| 贵州省| 梧州市| 洮南市| 临澧县| 辰溪县| 广安市| 民丰县| 辛集市| 叙永县| 台山市| 隆化县| 山丹县| 九寨沟县| 伊川县| 汉沽区| 曲周县| 苏州市| 沾益县| 五峰| 荥经县| 合肥市| 上高县| 岳西县| 延川县| 公主岭市| 凉城县| 宜都市| 禹州市| 龙海市| 遂溪县| 彭山县| 常宁市| 莱西市| 唐海县| 清河县|