文章内容

2022/5/7 21:59:42,作 者: 黄兵

TypeError: 'bool' object is not subscriptable

最近在编写 Python 程序的时候,服务运行一段时间之后报如下错误:

TypeError: 'bool' object is not subscriptable

出现问题的原因:

bool 值不能有下标,出现错误的代码如下:

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

import requests
from requests import HTTPError, ConnectionError, Timeout
from json import decoder, JSONDecodeError

def a(self, url):
    try:
        result = requests.get(url, timeout=100)
    except (ConnectionError, HTTPError, Timeout) as e:
        return False
    if result:
        # result值可能为None
        try:
            json_result = result.json()
        except decoder.JSONDecodeError:
            return False
        if json_result['status'] == 'ok':
            json_result_data = json_result['data']
            return json_result_data

def b(self):
    get_result = self.a('https://www.pdflibr.com')
    # 此处会出现错误,没有对获取的值进行判断,首先需要判断
    get_a1 = get_result['a1']

上面注释已经很清楚的说明了错误产生的原因。

解决方案:

对调用的结果首先需要判断,是不是 False,修改后的代码如下:

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

import requests
from requests import HTTPError, ConnectionError, Timeout
from json import decoder, JSONDecodeError

def a(self, url):
    try:
        result = requests.get(url, timeout=100)
    except (ConnectionError, HTTPError, Timeout) as e:
        return False
    if result:
        # result值可能为None
        try:
            json_result = result.json()
        except decoder.JSONDecodeError:
            return False
        if json_result['status'] == 'ok':
            json_result_data = json_result['data']
            return json_result_data

def b(self):
    get_result = self.a('https://www.pdflibr.com')
    # 此处会出现错误,没有对获取的值进行判断,首先需要判断
    if get_result:
        get_a1 = get_result['a1']
    else:
        pass

首先我们需要对调用的函数进行判断,之后才能获取下标,否则就会报如上错误。


黄兵个人博客原创。

转载请注明出处:黄兵个人博客 - TypeError: 'bool' object is not subscriptable

分享到:

发表评论

评论列表