测试Truthy或Falsy参数通过函数传递到if语句

the*_*nja 3 python if-statement truthiness

我也在这一点上画空白.而不是提供答案,我将不胜感激,如果有人可以帮助我理解为什么我的代码不打印预期的输出:

def bool_to_str(bval):
    if bval is True:
        mytest = 'Yes'
    else:
        mytest = 'No'
    return mytest
Run Code Online (Sandbox Code Playgroud)

预期产量:

>>>bool_to_str([1, 2, 3])
'Yes'
>>>bool_to_str(abcdef)
'Yes'
Run Code Online (Sandbox Code Playgroud)

实际输出的是什么:

>>>bool_to_str([1, 2, 3])
'No'
>>>bool_to_str(abcdef)
'No'
Run Code Online (Sandbox Code Playgroud)

请帮我理解我做错了什么.我认为函数需要测试参数的实际真值,但我不明白我错过了什么.

Ray*_*ger 8

bval is True检查是否[1, 2, 3]确实是True对象.您需要bool()评估对象是否为真值但与True对象不同的内容.