Переход с Java на Python [закрыт]
У меня есть младший начинающий, который исходит из фона Java. Как компания, мы теперь сосредоточены на разработке Python(хотя и с некоторыми устаревшими системами в Java).
Я ищу советы и ресурсы, чтобы помочь переходу и задавался вопросом, если вы, ребята, здесь были какие-либо полезные советы для новичка.
Ура.
9 ответов:
заставить его читать
руководство для начинающих на Python
подумайте о том, чтобы прочитать принятый ответ на этот вопрос, чтобы указать ему на эти вещи
Java - > Python список некоторых функций java не имеет
две статьи, обсуждающие общие различные подходы
частичное параллельное сравнение кода java и python
дайте ему указатели, как / где найти документацию, подобную Java JDK API
Я бы сказал, что одна проблема при переходе с любого языка удобная - это потерянное чувство вдруг не зная, как все работает!
Я бы посоветовал заполнить фон для них сначала с точки зрения следующего:
- как вы структура проектов? (помните, что Java-это "обычно" один класс на файл и в пакетах "каталоги"; это Python похоже?)
- как вы построить проектов? (каковы версии Python
ant,classpathetc?)- как вы настройка и развертывание ваш код? (каковы версии Python
Spring,guiceetc?)- где хорошие сайты сообщества, чтобы искать помощь?
- Каковы некоторые из самых полезных сторонних инструментов
Я думаю, что языковые различия (как привыкнуть
lambdas) будет достаточно легко и займет несколько недель в собственном темпе разработчика, но не понимание вышеуказанных пунктов приведет к замедлению процесса ознакомления.
для студентов, пришедших из чистого фона Java и желающих провести свою диссертацию с использованием некоторого программного обеспечения на основе Python, я нашел лучший способ-просто позволить им начать писать код после прочтения некоторых первых учебников.
затем время от времени я просматриваю их код и предлагаю фрагменты кода, которые слишком пахнут Java-ish, чтобы перейти на более Питонский стиль.
чаще всего это
- для-петли, которые могут быть изменены в список понимания
- чрезмерное использование классов, где 1) модули, кортежи или словари работают просто отлично или 2) интерфейсы не нужны явно
- слишком сложные условия, используемые в операторах if (
1<x && x<=y && y<10) Это можно упростить (1 < x <= y < 10)- заново изобретенная функциональность, которая может быть легко импортирована из
scipyили стандартные библиотеки Python- код клея для экспериментов в bash, который теперь может быть реализован гораздо более удобным для чтения в Python сам
Я нашел погружение в python чтобы быть лучшим средством против культурного шока, это обязательно произойдет при переходе с другого меньшего (просто шучу, конечно) языка на python. У него почти нет программ "Hello world", но вместо этого он показывает вам способы python, скажем, работать с xml, писать модульные тесты и т. д. Это было чрезвычайно полезно для меня.
Я нахожусь в несколько похожем положении с вами, так как я знаю Java довольно хорошо, но я только начинаю использовать Python.
The Python tutorial - это очень хорошее место для начала.
The Руководство По Стилю Python говорит вам все, что вам нужно знать о том, как должен выглядеть ваш код (и это важно в Python - пробелы важны).
и помните, что
ifиforвсегда:после них :-)
Python-это язык, который можно описать как:
"правила, которые вы можете вписать в ладонь вашей руки с огромным мешком крючки."
почти все в python следует тем же простым стандартам. Все доступно, изменчиво и легко настраивается. Существует очень мало элементов языкового уровня.
Возьмем, например, функцию LEN (data) builtin.
len(data)работает, просто проверка наdata.__len__()метода, а затем вызывает его и возвращать значение. Вот так,len()может работать на любом объекте, который реализует__len__()метод.
начните с изучения типов и базовый синтаксис:
- Динамические Строго Типизированные Языки
- bool, int, float, string, list, tuple, dict, set
- утверждения, отступы, "все есть объект"
- основные определения функции
затем перейти к изучению того, как python работает:
- импорт и модули (очень простой)
- путь python (sys.путь)
- the
dir()функции__builtins__как только вы поймете, как сочетать части вместе, вернитесь и покройте некоторые из более продвинутых языковых функций:
- итераторы
- переопределяет как
__len__(есть тонны из них)- список постижений и генераторы
- классы и объекты (опять же, очень просто, как только вы знаете пару правил)
- правила наследования python
и если у вас есть уровень комфорта с этими предметами (с акцентом на то, что делает их обновления), смотреть на более конкретные вещи:
- многопоточность в Python (Примечание глобальная блокировка интерпретатора)
- контекст-менеджеров
- доступ к базе данных
ИО- розетки
- etc...
и никогда не забывай Дзен питона (Тим Петерс)
Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than *right* now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those!
а как же http://python.computersci.org/?
Я думаю, что с таким руководством, плюс наставничество по идиомам Python (список comps и т. д.) при преобразовании некоторого кода Java в Python в качестве упражнения было бы достаточно
прикомандирования oxbow_lakes, как проектных команд документ свои вещи ?
Хотя хороший doc в значительной степени не зависит от языка, могут ли люди комментировать стандарты doc, инструменты, браузеры ?
Примеры хороших Python и хорошей документации будет полезным.
здесь уже есть много хороших советов, но я должен обратить внимание на более интерактивный характер Python по сравнению с Java. Python в отличие от Java предлагает вам классический "Read-Eval-Print-Loop" (REPL), который позволяет быстро экспериментировать с языком. Вместо того, чтобы гадать о том, как конкретный оператор будет работать в реальной жизни, ответ можно получить, введя выражение в интерпретатор и сразу увидеть результат. Это одна из причин, по которой я рекомендую Python для начала программисты, вы получаете более непосредственную обратную связь, чем традиционный цикл редактирования-компиляции-запуска других языков.
в частности, я использую ipython для большей части моего взаимодействия с Python. Среди прочего, это позволяет вам печатать '?'после любого идентификатора, чтобы получить некоторую помощь по идентификатору, который дает вам больше информации, чем стандартная функция help (), и меньше нажатий клавиш.
кроме того, чтобы превратить изучение Python в игру, я лично узнал много моего Python, решая головоломки в PythonChallenge . (Отказ от ответственности: я не связан с PythonChallenge). По общему признанию, решение проблем требует больше, чем просто знания Python (небольшая подсказка: сделать "просмотр источника" много), но желание решить головоломку даст вам мотивацию, чтобы узнать новые биты Python. Он сделал для меня по крайней мере. Желаю удачи.
Comments