; насколько я могу судить, поведение 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) по крайней мере.

Ответы на вопрос(1)

Ваш ответ на вопрос