python nonetype_【已解决】Python程序错误:TypeError: ‘NoneType’ object is not iterable
【問題】
如下代碼:def callBlogFunc(funcToCall, *paraList):
funcName = funcToCall.func_name;
if(blogIsNetease()):
trueFunc = getattr(BlogNetease, funcName);
logging.info("Now will cll netease function: %s", funcName);
elif (blogIsBaidu()) :
trueFunc = getattr(BlogBaidu, funcName);
logging.info("Now will cll baidu function: %s", funcName);
else:
logging.error("Invalid blog provider");
sys.exit(2);
return;
print "trueFunc=",trueFunc;
paraLen = len(paraList);
print "paraLen=",paraLen;
if(paraLen == 1):
return trueFunc(paraList[0]);
elif (paraLen == 2):
return trueFunc(paraList[0], paraList[1]);
elif (paraLen == 3):
return trueFunc(paraList[0], paraList[1], paraList[2]);
elif (paraLen == 4):
return trueFunc(paraList[0], paraList[1], paraList[2], paraList[3]);
elif (paraLen == 5):
return trueFunc(paraList[0], paraList[1], paraList[2], paraList[3], paraList[4]);
elif (paraLen == 6):
return trueFunc(paraList[0], paraList[1], paraList[2], paraList[3], paraList[4], paraList[5]);
elif (paraLen == 7):
return trueFunc(paraList[0], paraList[1], paraList[2], paraList[3], paraList[4], paraList[5], paraList[6]);
elif (paraLen == 8):
return trueFunc(paraList[0], paraList[1], paraList[2], paraList[3], paraList[4], paraList[5], paraList[6], paraList[7]);
else :
logging.error("Not support function parameters exceed 8 !");
sys.exit(2);
return;
def extractBlogUser(inputUrl):
return callBlogFunc(extractBlogUser, inputUrl);
def doPrepareWork(inputUrl):
# 2. extract blog user and blog entry url from input url
(extractOK, extractedBlogUser, generatedBlogEntryUrl) = extractBlogUser(inputUrl);
另外一個文件BlogBaidu.py中包含對應的所調用的函數:
def extractBlogUser(inputUrl):
(extractOk, extractedBlogUser, generatedBlogEntryUrl) = (False, "", "");
# some code ...
return
運行出錯:Traceback (most recent call last):
File "D:\tmp\WordPress\Others\to_wp\BlogsToWordpress\BlogsToWordpress_v2012-03-22-office\BlogsToWordpress_v2012-03-22-office.py", line 1389, in
main();
File "D:\tmp\WordPress\Others\to_wp\BlogsToWordpress\BlogsToWordpress_v2012-03-22-office\BlogsToWordpress_v2012-03-22-office.py", line 1288, in main
doPrepareWork(srcURL);
File "D:\tmp\WordPress\Others\to_wp\BlogsToWordpress\BlogsToWordpress_v2012-03-22-office\BlogsToWordpress_v2012-03-22-office.py", line 1135, in doPrepareWork
(extractOK, extractedBlogUser, generatedBlogEntryUrl) = extractBlogUser(inputUrl);
TypeError: ‘NoneType’ object is not iterable
【解決過程】
1.以為是上面的callBlogFunc的最后的else分支中,只是return而導致的錯誤呢,所以把:
else :
logging.error("Not support function parameters exceed 8 !");
sys.exit(2);
return;
改為:
else :
logging.error("Not support function parameters exceed 8 !");
sys.exit(2);
return trueFunc(paraList[0]);
結果問題依舊。
2.無意間嘗試出來,如果doPrepareWork中,直接調用extractBlogUser是可以的:
extractBlogUser(inputUrl);
但是還是未找到錯誤原因。
3. 最后才發現,原來是文件BlogBaidu.py中所包含的extractBlogUser,最后是return,沒有返回對應的所需要的值,
所以,把BlogBaidu.py中所包含的extractBlogUser的return改為:
return (extractOk, extractedBlogUser, generatedBlogEntryUrl);
就解決了問題了。
【總結】
此處出現:
TypeError: ‘NoneType’ object is not iterable
的原因在于,最終所被調用的函數所返回的值,和返回值賦值給的變量,不匹配。
此處即為,最終所調用的函數是extractBlogUser,其return為空,所以把返回的空的值,賦值給
(extractOK, extractedBlogUser, generatedBlogEntryUrl)
才會出現類型錯誤TypeError,才會提示NoneType,即extractBlogUser所return回來的None,是not iterable的。
如果再次出現類似錯誤,那么就去找找你所調用的函數的返回的值的類型,是否和返回值所賦值的變量的類型,兩者是否匹配。
總結
以上是生活随笔為你收集整理的python nonetype_【已解决】Python程序错误:TypeError: ‘NoneType’ object is not iterable的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab基于dct的图像压缩编码解码
- 下一篇: python引用文件的方法_[项目实践]