What do double parentheses mean in a function call? e.g. func(stuff)(stuff)?
.getwriter
returns a functioncallable object; you are merely calling it in the same line.
Example:
def returnFunction():
def myFunction():
print('hello!')
return myFunction
Demo:
>>> returnFunction()()
hello!
You could have alternatively done:
>>> result = returnFunction()
>>> result()
hello!
Visualization:
evaluation step 0: returnSomeFunction()()
evaluation step 1: |<-somefunction>-->|()
evaluation step 2: |<----result-------->|
codecs.getwriter('utf-8')
returns a class with StreamWriter
behaviour and whose objects can be initialized with a stream.
>>> codecs.getwriter('utf-8')
<class encodings.utf_8.StreamWriter at 0x1004b28f0>
Thus, you are doing something similar to:
sys.stdout = StreamWriter(sys.stdout)