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的。

如果再次出现类似错误,那么就去找找你所调用的函数的返回的值的类型,是否和返回值所赋值的变量的类型,两者是否匹配。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值