Мой ответ специально о копировании в стандартную оболочку Python (тестируется только в Linux).
В зависимости от того, откуда взялся код и как он изначально отформатирован пробел может иметь или не иметь значения. В частности, для вашего примера фрагмента - скопированного из раздела, отформатированного в коде SO - это не имеет значения (при условии правильного отступа кода для выполнения).
Пустая строка , однако, вызывает проблемы в стандартном интерпретаторе python, потому что обычно это de-indent оболочки-s cmd . В случае вашего сниппета пустая строка, предшествующая определению функции disable()
, преждевременно завершает / завершает определение класса, поэтому, когда в строке определения disable()
обнаруживается ошибка отступа:
>>> class bcolors:
... HEADER = '\033[95m'
... OKBLUE = '\033[94m'
... OKGREEN = '\033[92m'
... WARNING = '\033[93m'
... FAIL = '\033[91m'
... ENDC = '\033[0m'
...
>>> def disable(self):
File "<stdin>", line 1
def disable(self):
^
IndentationError: unexpected indent
>>>
Так что вам просто нужно обратить внимание на эти пустые строки. Вашему фрагменту нужно всего 2 многострочных операции копирования-вставки, чтобы обойти эту пустую строку.
Единственное, что мне было нужно - для вставки копий только разделов кода с отступом (скажем, функций из классов) - один дополнительный уровень отступа, чтобы не нужно было заново делать отступ скопированного кода. Для этого начальная строка if 1:
до вставки фрагмента и Введите (т.е. пустая строка) после выполнения трюка:
>>> if 1:
... def disable(self):
... self.HEADER = '' # I think stuff gets mangled because of the extra level of indentation
... self.OKBLUE = ''
... self.OKGREEN = ''
... self.WARNING = ''
... self.FAIL = ''
... self.ENDC = ''
...
>>>