; насколько я могу судить, поведение print при обнаружении None для sys.stdout - нет.
у заставить замолчать и восстановитьsys.stdout
сюда:
import sys
sys.stdout = None
print('hello') # does not write to stdout
sys.stdout = sys.__stdout__
print('hello') # writes to stdout
я знаю, мне лучше использоватьcontextlib.redirect_stdout
что, вероятно, делает что-то похожее, но мой вопрос: почему работает приведенный выше код?
я бы предположил, что Python будет называть такие вещи, какsys.stdout.write()
так что я заменяюsys.stdout
с должен иметьwrite
метод (например,io.StringIO
) по крайней мере.