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

259
Visualizações
Inconvenientes de usar el operador <= en lugar de == más una suposición

He sido parte de una revisión de código en la que tengo una condición como esta (código Python):

 my_list = <whatever list> if len(my_list) <= 0: do_something()

Me han señalado que la condición debe ser == en lugar de <= ya que una lista no puede tener una longitud negativa. No tengo problemas con eso en este caso, pero quería saber si realmente hay algún inconveniente al usar <= .

Aquí está mi razón de por qué usar <= :

  1. La condición real que quiero comprobar not len(my_list) > 0 , que es equivalente a len(my_list) <= 0 , por lo que es correcto.
  2. Como se explica en el punto 1, len(my_list) == 0 solo no es equivalente a la condición original. Lo es en este caso, pero no es baladí por qué es así. len() devuelve el valor devuelto por __len__() que puede ser arbitrario. Solo resulta ser equivalente porque la implementación de len() realiza algunas validaciones en el valor. Se podría argumentar que la implementación de len() puede cambiar en el futuro, por lo que la equivalencia ya no se mantendría.
  3. Siento que len(my_list) <= 0 sería más seguro en general que usar len(my_list) == 0 más una suposición que podría no ser válida en algunos casos extremos o inesperados.

Entonces, ¿son correctos mis argumentos? ¿Conoce alguna desventaja de usar len(my_list) <= 0 ?

Lo siento si esto parece una pregunta no relevante, pero me lo han planteado más de una vez en las revisiones de código, así que quería saber si hay algo que me falta.

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

0

Entonces, después de investigar un poco más, encontré esto en las recomendaciones de programación de Python PEP 8 ( https://peps.python.org/pep-0008/#programming-recommendations )

 # Not recommended my_list = [] if not len(my_list): print('List is empty!') # Recommended my_list = [] if not my_list: print('List is empty!')

¡así que ahora conoce la forma más pitónica de verificar si una lista está vacía!

¡Después de probar un poco, descubrí que esto funciona incluso para clases personalizadas! Pero mi prueba podría estar incompleta.

 class Test: def __init__(self, len): self.len = len def __len__(self): return self.len t1 = Test(3) if len(t1): print("len1 > 0") if t1: print("len2 > 0") t1 = Test(0) if len(t1): print("len3 > 0") if t1: print("len4 > 0") t1 = Test(-1) if len(t1): print("len5 > 0")

huellas dactilares

 len1 > 0 len2 > 0 Exception has occurred: ValueError __len__() should return >= 0
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