Найти - Пользователи
Полная версия: Задачи из книги Hello World. Занимательное программирование (авторы У. Сэнд, К. Сэнд)
Начало » Python для новичков » Задачи из книги Hello World. Занимательное программирование (авторы У. Сэнд, К. Сэнд)
1 2 3 4 5
py.user.next
Rodegast
Да ладно? Второй и третий python не так сильно отличаются.
На втором питоне надо использовать xrange(), на третьем питоне его нет. И вот скажи, зачем человеку учить, что есть такая функция? Ради чего? Потом он будет вынужден учить разницу между функциями range() и xrange(). А как без этого?
Вот это и есть куча ненужной фигни.

Надеюсь, ты помнишь импорт из future. А ведь мог бы и забыть уже, потому что в третьем питоне про него и знать не нужно вовсе. Или можно вспомнить о декларации кодировки исходника в каждом файле Я-то это всё знаю и помню, вот только нафиг оно нужно мне сейчас? А чтобы узнать это всё, мне приходилось штудировать тонны материала на английском, а то вдруг что-нибудь знать не будешь и написать даже примитивную прогу не сможешь.
Rodegast
> И вот скажи, зачем человеку учить, что есть такая функция? Ради чего?

Учить их в любом случае надо, проекты на втором python-е будут ещё долго существовать.

> Надеюсь, ты помнишь импорт из future.

Я этим никогда не пользовался.

> А чтобы узнать это всё, мне приходилось штудировать тонны материала на английском

Ну ты и чудак…
kompilikus
А как адаптировать код с 2 на 3, не зная разницы? Какой по вашему мнению лучше конвертер использовать?
py.user.next
Rodegast
Учить их в любом случае надо, проекты на втором python-е будут ещё долго существовать.
Не надо. Новичку надо учить третий питон, потому что, когда он выучит язык, появится уже четвёртый питон. Нужно ли учить второй питон профессионалу? Тоже под вопросом. Все нюансы нафиг не нужны, так как всеми нюансами никто не пользуется. Даже при чтении и переработке кода (хотя нафига это надо вообще?) достаточно знать лишь основы второго питона.

kompilikus
А как адаптировать код с 2 на 3, не зная разницы?
Напишешь заново всё или отделегируешь это какому-нибудь старику. Пускай сидит пенсионер и переводит.

kompilikus
Какой по вашему мнению лучше конвертер использовать?
Автоматических конвертеров не найдёшь; всё равно придётся руками менять. Его пытались сделать, но получилось всё равно фуфло. Но, скорее всего, ты и не будешь ничего переводить. Либо будешь запускать на втором без перевода, либо будешь писать заново всё. Оно и лучше.
py.user.next
kompilikus
А это не подойдёт?
Не подойдёт.
kompilikus
А пример кода можете привести, с помощью которого можно убедиться, что не подойдёт?
doza_and
kompilikus
Надо ли в PyScripter убрать галочку на Auto-complete with one entry?
По желанию, но думаю не повредит.

По поводу питона двушки. Я тоже думаю что это пустая трата времени для новичка. пишите на трешке, про конверторы забудьте. Зачем они вам если на трешке будете писать?
kompilikus
не повредит убрать галочку или галочка оставленная не повредит?

Может быть писать не буду. Так несколько дней почитаю, пока есть энтузиазм. Потом может быть надоест и решу посмотреть, что из себя представляет другой язык.
py.user.next
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]$

Строка интерпретатора не преобразовалась в
#!/usr/bin/env python3
Строка кодировки не удалилась и осталась
# -*- coding: utf-8 -*-

Почему строка кодировки нужна во втором питоне и не нужна в третьем? Потому что во втором питоне, если её не поставить, то по умолчанию там будет кодировка 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]$
Но дело тут даже не в выводе, а в наглядности того, какая лажа получается после перевода в самом исходном коде. Если бы ты так изначально на третьем написал, как он перевёл, то можно было бы только пальцем у виска покрутить и выкинуть такое из любого проекта.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB