访问python元组时需要澄清

访问python元组时需要澄清,python,python-3.x,Python,Python 3.x,你能详细解释一下吗?最好是逐行解释,输出结果是什么 a设置为True,Python的bool是int类型的子类,因此a可以解释为1 (省略print语句,因为这不需要解释),索引分别为0和1的元组(“a”,“B”),在布尔表达式a==False的结果处进行索引。表达式的结果是False,因为a是True,所以a==False是False,因此被解释为0,所以元组在索引0处被索引,从而打印“a” 这段代码之所以令人困惑,部分原因是它依赖于动态类型转换。这不是特别好的代码 a = True pr

你能详细解释一下吗?最好是逐行解释,输出结果是什么

  • a
    设置为
    True
    ,Python的
    bool
    int
    类型的子类,因此
    a
    可以解释为
    1

  • (省略
    print
    语句,因为这不需要解释),索引分别为
    0
    1
    的元组
    (“a”,“B”)
    ,在布尔表达式
    a==False
    的结果处进行索引。表达式的结果是
    False
    ,因为
    a
    True
    ,所以
    a==False
    False
    ,因此被解释为
    0
    ,所以元组在索引
    0
    处被索引,从而打印
    “a”


  • 这段代码之所以令人困惑,部分原因是它依赖于动态类型转换。这不是特别好的代码

    a = True
    print(('A','B')[a == False])
    
    

    棘手的部分是,当转换为
    int
    类型时,
    False
    等于
    0
    ,然后将其用作元组(“A”、“B”)的索引。这是一种糟糕的做法,通常令人困惑。

    False
    实际上只是一个整数0
    True
    只是一个整数1。这回答了你的问题吗?如果你自己一步一步地解决它,你会学得更好。计算出表达式每个部分的值,然后将它们组合起来。否。相反,请确切地解释当您跟踪此代码时,从您得到的输出中您不理解的内容。在发布之前,进行初步调查是你的任务。请浏览、和,以了解此网站的工作原理,并帮助您改进当前和未来的问题,从而帮助您获得更好的答案。这是否回答了您的问题?
    a = True 
    idx = (a == False) # False
    ("A", "B")[idx] # idx gets converted to int(False) -> 0
    ("A", "B")[0] # -> "A"