原文链接: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])
扩展内容:
如果本文还没有完全解决你的疑惑,你也可以在微信公众号“桔子code”后台给我留言,欢迎一起探讨交流。