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 delnextmé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 llamadanextpara 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.