_ = yield i yield _
Сначала это
yield
s значение, на которое ссылаетсяi
, например.1
. Затем он возвращает значение, возвращаемое операциейyield
, которая являетсяNone
. Это делается на каждой итерации цикла.for i in x: _ = yield i
Это просто
yield
s значение, на которое ссылаетсяi
, например.1
, затем переходит к следующей итерации цикла, создавая2
, затем3
.В отличие от
return
ключевое словоyield
может использоваться в выражении:x = return 0 # SyntaxError x = yield 0 # perfectly fine
Теперь, когда интерпретатор увидит
yield
, он произведет указанное значение. Однако, когда он это делает, эта операция возвращает значениеNone
, так же какmylist.append(0)
илиprint('hello')
будетreturn
значениемNone
. Когда вы присваиваете этот результат ссылке, например_
, вы сохраняете этоNone
.Итак, в первом фрагменте вы получаете объект, затем вы сохраняете «результат», этой операции
yield
, которая являетсяNone
, а затем выyield
, чтоNone
. Во втором фрагменте вы даете объект, затем вы сохраняете «результат» этой операцииyield
, но вы neveryield
, которые вызывают , поэтомуNone
не отображается на выходе .Обратите внимание, что
yield
не всегда будет возвращатьNone
- это именно то, что вы отправили генератору с помощьюsend()
. Поскольку в этом случае ничего не было, вы получитеNone
. См. этот ответ для получения дополнительной информации оsend()
.
Попытайтесь использовать mb_detect_encoding
функция . Эта функция исследует Вашу строку и попытку "предположить", каково ее кодирование. Можно затем преобразовать его, как желаемый. Как brulak предложил , однако, Вы - вероятно, более обеспеченное преобразование к UTF-8, а не от , для сохранения данных, которые Вы передаете.
Как Вы собираетесь обработать символы неASCII от UTF-8 или 16 или 32 файлов?
я спрашиваю, потому что я думаю, что у Вас могут быть вопросы проектирования здесь.
я преобразовал бы Ваш выходной файл в UTF-8 (или 16 или 32) вместо наоборот.
Затем у Вас не будет этой проблемы.
Вы также рассмотрели проблемы безопасности, которые могут явиться результатом преобразования завершенного кода UTF-8? См. этот комментарий :
Обнаруживающее многобайтовое кодирование
Фигура, в чем находится кодирование Вашего исходного файла, затем преобразовывает его в UTF-8, и необходимо быть хороши пойти.