Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

508
Visualizações
¿Cuáles son las diferencias entre bool() y operator.truth()?

bool() y operator.truth() prueban si un valor es verdadero o falso y parecen bastante similares a los documentos, incluso dice en los documentos de truth() que:

Esto es equivalente a usar el constructor bool.

Sin embargo, truth() es más del doble de rápido que bool() a partir de una prueba simple (se muestran los tiempos de Python 3.6, pero 2.7 es similar):

 from timeit import timeit print(timeit('bool(1)', number=10000000)) # 2.180289956042543 print(timeit('truth(1)', setup='from operator import truth', number=10000000)) # 0.7202018899843097

entonces cuales son las diferencias? ¿Debo usar truth() en lugar de bool() ?

Esta pregunta y respuesta surgió después de extensos comentarios y discusiones con ShadowRanger sobre esta pregunta .

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Aunque bool() y operator.truth() arrojan el mismo resultado para los principales casos de uso, su implementación es bastante diferente. bool() es un constructor de clase o tipo, mientras que truth() es una función regular estrecha y optimizada.

En términos prácticos, también hay dos diferencias: 1) bool() llamado sin argumentos return s False mientras que truth() requiere un argumento. 2) bool() acepta un argumento de palabra clave x , como bool(x=1) , mientras que truth() () no acepta argumentos de palabra clave. Ambos agregan sobrecarga a bool() para los casos de uso regulares.

La palabra clave implementación es extraña ya que es probable que nadie la necesite y el nombre x apenas es descriptivo. El problema 29695 cubre esto y, de hecho, el problema afecta no solo a bool() sino también a otras clases como int() o list() . Sin embargo, a partir de Python 3.7 en adelante, estos argumentos de palabras clave se eliminarán y la velocidad debería mejorar. No obstante, probé los tiempos en la última rama de Python 3.8, y bool() es más rápido que antes, pero sigue siendo el doble de lento que truth() , presumiblemente debido a la implementación más genérica de bool() .

Por lo tanto, si tiene una tarea en la que la velocidad es de gran importancia, recomendaría usar truth() sobre bool() si necesita una función (por ejemplo, para analizar como clave para sorted() ). Sin embargo, como señala khelwood , bool() aún puede ser más rápido ocasionalmente, como filter(bool, iterable) , por lo que probablemente sea mejor programar su caso de uso para estar seguro de cuál es la mejor opción.

Por supuesto, si no necesita una función y simplemente quiere probar si un valor es verdadero o falso , debe usar las declaraciones idiomáticas if o if not , que son las más rápidas como comentaron khelwood y user2357112 .

Esta pregunta y respuesta surgió después de extensos comentarios y discusiones con ShadowRanger sobre esta pregunta .

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda