propias procedimientos metodos lista guardar globales funciones ejemplos comando python unicode stdout codec

python - procedimientos - ¿Qué significa doble paréntesis en una llamada a función? por ejemplo, func(cosas)(cosas)?



lista de funciones de python (2)

Titulo original:

" Ayúdame a entender esta extraña expresión de Python? sys.stdout = codecs.getwriter(''utf-8'')(sys.stdout) "

Utilizo este idioma todo el tiempo para imprimir un montón de contenido para estandarizar en utf-8 en Python 2. *:

sys.stdout = codecs.getwriter(''utf-8'')(sys.stdout)

Pero para ser honesto, no tengo idea de lo que está haciendo (sys.stdout) . En cierto modo, me recuerda a un cierre de Javascript o algo así. Pero no sé cómo buscar este idioma en los documentos de Python.

¿Puede alguno de ustedes, señor, explicar qué está pasando aquí? ¡Gracias!


.getwriter devuelve un objeto invocable a la función ; simplemente lo estás llamando en la misma línea.

Ejemplo:

def returnFunction(): def myFunction(): print(''hello!'') return myFunction

Manifestación:

>>> returnFunction()() hello!

Usted podría haber hecho alternativamente:

>>> result = returnFunction() >>> result() hello!

Visualización:

evaluation step 0: returnSomeFunction()() evaluation step 1: |<-somefunction>-->|() evaluation step 2: |<----result-------->|


codecs.getwriter(''utf-8'') devuelve una clase con comportamiento StreamWriter y cuyos objetos se pueden inicializar con una secuencia.

>>> codecs.getwriter(''utf-8'') <class encodings.utf_8.StreamWriter at 0x1004b28f0>

Por lo tanto, estás haciendo algo similar a:

sys.stdout = StreamWriter(sys.stdout)