Вы сохранили свой простой код в кодировке, которая явно включает в себя спецификацию - для редактора 21-го века, который, скорее всего, будет UTF-8. В вашей программе нет не 7-битных символов ASCII, поэтому в спецификации нет необходимости - но компьютеры, как известно, глупы и выполняют то, что вы просите. Но в верхней части вашего скрипта вы заявляете, что используете полностью кодированный тип - тот, который не использует спецификацию - и поэтому Python жалуется.
Тот факт, что у вас есть Unicode-строки в вашем скрипте, кстати, не имеют значения. Это также происходит, когда вы сохраняете простое
#!/usr/bin/env python
# -*- coding: windows-1255 -*-
x
и пытаетесь запустить его.
Это неожиданно, потому что анализ строки кодирования вверху Python уже пришлось читать и пропускать спецификацию. Но эта кодировка говорит о том, что не должно быть спецификации, поэтому, как правильно указывает Python, где-то должна быть ошибка.
Не ie в кодирование строки или сохранение без спецификации, и проблема исчезает. Если вы не можете выяснить, почему ваш редактор сохраняет данные таким образом, или не можете узнать, как правильно сохранить в правильной кодировке, измените строку вверху на
# -*- coding: utf-8 -*-
Очень хорошее обсуждение проблем с различные кодировки и Unicode Абсолютный минимум Каждый разработчик программного обеспечения Абсолютно, положительно должен знать о Unicode и наборах символов (без оправданий!) .