A menos que esté loco if None not in x
y if not None in x
son equivalentes. ¿Hay una versión preferida? Supongo que None not in
es más inglés-y, por lo tanto, más pitónico, pero not None in
se parece más a la sintaxis de otro idioma. ¿Hay una versión preferida?"Ninguno no en" vs "no Ninguno en"
Respuesta
Recopilan en el mismo bytecode, por lo que sí son equivalentes.
>>> import dis
>>> dis.dis(lambda: None not in x)
1 0 LOAD_CONST 0 (None)
3 LOAD_GLOBAL 1 (x)
6 COMPARE_OP 7 (not in)
9 RETURN_VALUE
>>> dis.dis(lambda: not None in x)
1 0 LOAD_CONST 0 (None)
3 LOAD_GLOBAL 1 (x)
6 COMPARE_OP 7 (not in)
9 RETURN_VALUE
El documentation también deja claro que los dos son equivalentes:
x not in s
devuelve la negación dex in s
.
Como mencionas None not in x
es el inglés más natural, así que prefiero usar esto.
Si escribe not y in x
podría no estar claro si se refería a not (y in x)
o (not y) in x
. No hay ambigüedad si usa not in
.
gracias, no sabía que podía comparar el bytecode como esta. –
La expresión
not (None in x)
(parens añade para mayor claridad) es una negación boolean ordinario. Sin embargo,
None not in x
se añade una sintaxis especial para el código más legible (no hay posibilidad aquí, ni tiene sentido, utilizar y, o, etc frente a la in). Si este caso especial fue agregado, úselo.
Lo mismo se aplica a
foo is not None
vs
not foo is None
encuentro el "no es" mucho más fáciles de interpretar. Como una ventaja adicional, si la expresión es parte de una expresión booleana más grande, el alcance de la no es inmediatamente claro.
+1 por mencionar alcance – Falmarri
- 1. Falso o Ninguno vs. Ninguno o Falso
- 2. no Ninguno prueba en Python
- 3. Ninguno en Boost.Python
- 4. defaultdict (Ninguno)
- 5. A o B, no ambos, ninguno tampoco
- 6. Muchos de DOM. Oculto vs pantalla ninguno
- 7. OperationalError: (OperationalError) no se puede abrir el archivo de base de datos Ninguno Ninguno
- 8. Scrapy Spider no devuelve ninguno en lugar del artículo
- 9. lienzo en un div con pantalla ninguno no funciona
- 10. Raise excepción vs. return Ninguno en las funciones de Python
- 11. Model.objects.get() o Ninguno
- 12. css, deshabilitar pantalla: ninguno;
- 13. Asignación a Ninguno
- 14. Python: min (Ninguno, x)
- 15. marcador personalizado como en Pitón Ninguno
- 16. jQuery fadeIn() en la pantalla ninguno
- 17. ¿Lista mínima en Python con ninguno?
- 18. IE 7 muestra oculta y no muestra ninguno Elementos
- 19. ¿Por qué no se ejecuta ninguno de mis ActionFilters?
- 20. Tecla de acceso dict y volver Ninguno si no existe
- 21. Comprobar si OneToOneField hay ninguno en Django
- 22. ¿No puede obtener XmlDocument.SelectNodes para recuperar ninguno de mis nodos?
- 23. Google Chrome no puede enviar formularios con pantalla: ninguno
- 24. ¿Por qué algunos (null) no se consideran ninguno?
- 25. ¿Está bien omitir "devolver ninguno"?
- 26. Cómo anular el borde: ninguno?
- 27. pantalla: ninguna; muestra 'ninguno' en el navegador
- 28. tr pantalla ninguno falla ie9
- 29. SQLAlchemy plantea Ninguno, provoca TypeError
- 30. "0" vs "ninguno" como valor del atributo css
Vea también http://stackoverflow.com/questions/2710940 – Gumbo
Si cambia de 1 operador a otro operador, muchas de las preguntas en SO serían duplicados – Falmarri