Изучаю пайтон столкнулся с упражнением :
Код упражнения# -*- coding: utf-8 -*-
import codecs, sys
outf = codecs.getwriter('cp866')(sys.stdout, errors='replace')
sys.stdout =outf
from sys import argv
script, user_name = argv
promt = '>'
print u"Привет %s, я - сценарий %r " % (user_name, script)
print u"Я хочу задать тебе несколько вопросов "
print u" Я тебе нравлюсь, %s?" % user_name
likes = raw_input(promt) .decode(sys.stdin.encoding or
locale.getpreferrendcoding(True))
print u"Где ты живешь, %s?" % user_name
lives = raw_input(promt) .decode(sys.stdin.encoding or
locale.getpreferrendencoding(True))
print u" На каком ты компьютере работаешь ?"
computer = raw_input(promt) .decode(sys.stdin.encoding or
locale.getpreferredencoding(True))
print u"""
Итак , ты ответил %r на вопрос, нравлюсь ли я тебе.
Ты живешь в %r .Не представляю , где это.
И у иеья есть компьютер %r. Прекрасно !
""" % (likes, lives, computer)
Мне не очень понятны некоторые строки , которые укажу ниже . Хотелось бы получить объяснение как это работает . Я напишу как понимаю я .
Первый вопрос
#импортируем модуль codecs,sys
import codecs, sys
#так как этот код должен работать в консоле которая работает на cp866, а пользователь вводит
# в другой кодировке, получаются кракозябры.
#для этого мы делаем обертку которая перекодирует вводимую данные в одной кодировке в cp866
# создается переменная в которую записывается результат перекодирования .
outf = codecs.getwriter('cp866')(sys.stdout, errors='replace')
#как раз тут отдается на вывод в консоль уже перекодированный текст
sys.stdout =outf
Что собственно не понятно.Хочу понять как работает код с точки компьютера.Пытаюсь читать документацию на docs.python но это сложно для меня .
Второй вопрос
#создается переменная likes в которую записывается результат ввода пользователем из input и декодируется .
#А что дальше я не понимаю
# Хотелось бы понять как это работает с точки зрения
# компьютера, программирования
likes = raw_input(prompt).decode(sys.stdin.encoding or
locale.getpreferredencoding(True))
Надеюсь мои вопросы для вас звучат не сумбурно. На сегодняшний день для меня эта ситуация ввела меня в тупик . Надеюсь здесь мне объяснят как работает код в двух приведенных мною примерах.