Python错误集锦:TypeError: ‘bool’ object is not subscriptable

原文链接:http://www.juzicode.com/python-error-typeerror-bool-object-is-not-subscriptable

错误提示:

试图访问列表时提示TypeError: 'bool' object is not subscriptable
#VX公众号:桔子code / juzicode.com
def func(len=None):
    if len == 0 or len is None:
        return False
    lst = '*' * len
    return lst

test = func(12)
print(test[0])
test = func()
print(test[0])
==========运行结果:
*
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-16-6a7b07d5d6ea> in <module>
     10 print(test[0])
     11 test = func()
---> 12 print(test[0])

TypeError: 'bool' object is not subscriptable

错误原因:

1、第12行调用func()时,没有传入入参,默认len参数为None,所以进入if len==0 or len is None的分支,返回的数据实际为False,而False所属的bool类型不能用下标索引。

上面的例子是一个简化的例子,在使用第三方库或者自定义的方法、函数时要弄清楚其所有可能返回的数据类型。另外在对list类型做索引时要对其长度进行判断。

解决方法:

1、在使用下标索引list时,需要先进行判断:

#VX公众号:桔子code / juzicode.com
def func(len=None):
    if len == 0 or len is None:
        return False
    lst = '*' * len
    return lst

test = func(12)
if test is not False:
    print(test[0])
test = func()
if test is not False:
    print(test[0])

扩展内容:

  1. OpenCV-Python教程


如果本文还没有完全解决你的疑惑,你也可以在微信公众号“桔子code”后台给我留言,欢迎一起探讨交流。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注