kompilikus
А пример кода можете привести, с помощью которого можно убедиться, что не подойдёт?
Не преобразованный
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print range(10) + range(10),
Вывод
[guest@localhost 2to3]$ ./t.py
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[guest@localhost 2to3]$
Преобразованный
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print(list(range(10)) + list(range(10)), end=' ')
Вывод
[guest@localhost 2to3]$ python3 ./out/t.py
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [guest@localhost 2to3]$
Строка интерпретатора не преобразовалась в
Строка кодировки не удалилась и осталась
Почему строка кодировки нужна во втором питоне и не нужна в третьем? Потому что во втором питоне, если её не поставить, то по умолчанию там будет кодировка ascii. А в третьем питоне, если её не поставить, то по умолчанию там будет кодировка utf-8. Поэтому мы в третьем питоне и не ставим декларацию кодировки, так как в третий питон добавили utf-8 по умолчанию.
По идее, транслятор должен был стереть её, но не стёр и оставил мусор в исходнике.
Дальше ты приводил сайт по конвертированию. Маленький секрет тебе открою: лучше lib2to3 ничего нет для трансляции, поэтому любой сайт, транслирующий питон из 2-ой версии в 3-ью, базируется на этом модуле питона.
Вот ещё
На втором
#!/usr/bin/env python
# -*- coding: utf-8 -*-
for k in {1: 2, 3: 4}.keys():
print '%s' % k,
На третьем
#!/usr/bin/env python
# -*- coding: utf-8 -*-
for k in list({1: 2, 3: 4}.keys()):
print('%s' % k, end=' ')
И вывод тоже разный у них.
[guest@localhost 2to3]$ ./t.py
1 3
[guest@localhost 2to3]$ python3 ./out/t.py
1 3 [guest@localhost 2to3]$
Но дело тут даже не в выводе, а в наглядности того, какая лажа получается после перевода в самом исходном коде. Если бы ты так изначально на третьем написал, как он перевёл, то можно было бы только пальцем у виска покрутить и выкинуть такое из любого проекта.