De http://docs.python.org/reference/expressions.html#boolean-operations:
En el contexto de las operaciones booleanas, y también cuando las expresiones son utilizadas por los estados de flujo de control, los siguientes valores se interpretan como falsa: Falso, Nada, cero numérico de todos los tipos, y cadenas vacías y contenedores (incluidas cadenas, tuplas, listas, diccionarios, conjuntos y conjuntos congelados). Todos los demás valores se interpretan como verdaderos.
El enunciado clave aquí que yo creo que está malentendido es "interpretado como falsa" o "interpretado como verdadero". Esto no significa que ninguno de esos valores sea idéntico a True o False, o incluso igual a True o False.
La expresión '/bla/bla/bla'
serán tratados como cierto cuando se espera una expresión booleana (como en una declaración if
), pero las expresiones '/bla/bla/bla' is True
y '/bla/bla/bla' == True
se evaluará como falso por las razones de la respuesta de Ignacio.
+1 Creo que este es el malentendido subyacente. Quizás ayude saber que hay una función 'bool' que '' interpreta '' un valor como booleano. Se podría decir que esta función se llama implícitamente en cada 'si' (que probablemente no sea cierta en un sentido técnico, pero al menos agregarla nunca cambia el comportamiento de una instrucción if). –