pyplot - subplot python
Python: ¿Por qué debería usar next() y no obj.next()? (3)
Python 2.6 introdujo una next
función.
¿Por qué fue necesario esto? Siempre se podría escribir obj.next()
lugar de next(obj)
.
¿Es este último más pythonic
?
Recupere el siguiente elemento del iterador llamando a su método
next()
(__next__()
en python 3) . Si se proporciona el valor predeterminado , se devuelve si el iterador está agotado; de lo contrario, seStopIteration
.
Obtienes la opción por default
.
Además de la funcionalidad adicional obvia, también se ve mejor cuando se usa junto con expresiones generadoras. Comparar
(x for x in lst if x > 2).next()
a
next(x for x in lst if x > 2)
Este último es mucho más consistente con el resto del estilo de Python, IMHO.
PEP 3114 describe este cambio. Un extracto de la motivación:
Este PEP propone que se
__next__
nombre delnext
método a__next__
, consistente con todos los demás protocolos en Python en los que se llama implícitamente a un método como parte de un protocolo de nivel de idioma, y que se introduzca una función incorporada llamadanext
para invocar__next__
Método, consistente con la manera en que otros protocolos son invocados explícitamente.
Asegúrese de leer este PEP para más detalles interesantes.
En cuanto a la razón por la que desea utilizar el next
integrado: una buena razón es que el next
método desaparece en Python 3, por lo que para la portabilidad es mejor comenzar a usar el next
incorporado lo antes posible.