Подтвердить что ты не робот

Программирование в Python по сравнению с программированием на Java

Я писал Java в течение последних двух лет, и теперь я начал писать на python (кроме того).

Проблема в том, что, когда я смотрю на свой код на Python, похоже, что кто-то пытался заглушить Java-код в формате python, и он выглядит дрянным, потому что... ну, python - это не Java.

Любые советы о том, как избежать этого шаблона "Написание Java в Python"?

Спасибо!

4b9b3361

Ответ 1

Вы можете подумать о том, чтобы погрузиться в парадигмы Python. Лучший способ - сначала узнать, что они тогда изучают, передовые методы, читая некоторую литературу и просматривая некоторые образцы кода. Я рекомендую Learning Python от Марка Лутца; отлично подходит для начинающих и продвинутых пользователей.

Вы сделаете себе великую несправедливость, если будете программировать на Python и не сможете использовать весь встроенный, отличный от разработчиков, синтаксис Pythonic.

Как говорил мой французский учитель: "Французский - это не просто английский язык с разными словами".

Ответ 2

Вы можете начать с чтения Zen of Python. Это даст вам некоторое представление о том, как должен писать код Python, если вы понимаете язык настолько, чтобы понять, о чем он говорит.: -)

Ответ 3

Если вы новичок в Python и приходят с Java (или С# или другого подобного статически типизированного языка OO), эти классические статьи от PJ Eby и Ryan Tomayko необходимо прочитать:

Ответ 4

Некоторые из основных способов, которыми Python отличается от C/Java-подобных языков:

  • Сопоставление списков.

  • Поддержка функционального программирования.

  • Использование определенных Pythonic-конструкций вместо подобных C-подобных конструкций, хотя оба они кажутся работающими (список понятий можно утверждать как часть этого, но есть и другие).

Есть и другие, но это основные, которые прослушивали меня, когда я впервые начал Python (и я пришел с лет Java, как вы).

Прежде чем использовать какие-либо из них, полезно понять, почему вы должны использовать пифонический код, а не обычный способ C/Java в Python, хотя оба дают вам тот же результат.

Для начала Python предоставляет некоторые мощные функции, недоступные на C/Java, что делает ваш код намного понятнее и проще (хотя это субъективно и, возможно, не лучше для кого-то, кто приходит с Java сначала). Первые две точки попадают в эту категорию. Например, поддержка функций в качестве объектов и закрытий первого класса облегчает работу с вещами, которые потребуются во всех видах странной акробатики с внутренними классами на Java.

Но главная причина заключается в том, что Python является интерпретируемым языком, а некоторые конструкции намного быстрее, чем эквивалентный C/Java-подобный код. Например, перечисления списков обычно намного быстрее, чем эквивалент for-loop, который выполняет итерацию по индексам списка и обращается к каждому элементу по индексу. Это очень объективная выгода, и IMHO многие из "Python в слишком медленном" способе мышления проистекают из использования кода стиля Java в стиле Python.

Один из лучших способов узнать о pythonic-кодексе - прочитать код других людей. Я действительно многому научился, посмотрев код Python, размещенный в ответах на вопросы SO. Они часто бывают объяснениями, и обычно очевидно, почему это лучше, чем непифонный код (скорость, ясность и т.д.).

Edit:

Конечно, есть другие способы получить код других людей. Вы также можете загрузить и просмотреть код любого хорошего проекта Python с открытым исходным кодом. Книги также являются хорошим ресурсом, я бы рекомендовал O'Reilly Python Cookbook. В нем много полезных примеров кода и очень подробные объяснения.

Ответ 5

Если вы хотите увидеть какой-то довольно идиоматический Python, который делает нетривиальные вещи, Dive Into Python, хотя Dive Into Python 3 является более новым и может стать лучшим источником советов по стилю. Если вы ищете больше для некоторых моментов для обзора, Код как Pythonista.

Ответ 6

Вы можете опубликовать свой код в Refactor my code, чтобы узнать, может ли кто-нибудь показать вам более Pythonic способ сделать это.

Ответ 7

Определенно, это не панацея, но я думаю, что вы должны попробовать какой-нибудь гольф кода в Python. Очевидно, что никому не следует писать код "golfed" IRL, но найти самый короткий способ выразить что-то действительно заставляет вас использовать встроенные функциональные возможности языка.

Ответ 8

Кто-то предоставил мне этот список того, как "Python не является Java" , когда я начал Python после Java, и это было очень полезно.

Кроме того, посмотрите этот аналогичный вопрос SO, который я опубликовал совсем недавно, когда находится в аналогичной позиции.

Ответ 9

Попробуйте найти алгоритмы, которые вы хорошо понимаете, и посмотрите, как они реализованы в стандартных библиотеках python.

Persist.:)

Ответ 10

Изучите несколько других языков. Это поможет вам сделать разницу между алгоритмами (структурой обработки, неизмененными между языками) и локальными синтаксическими особенностями языка. Затем вы можете "написать Foo in Bar" для любой комбинации языков "Foo" и "Bar".

Ответ 11

Ешьте Python, Sleep Python и напишите Python. Это единственный способ........

Ответ 12

Это полезно, если вы хотите понять, как закодировать python в более питоническом или правильном виде: http://www.python.org/dev/peps/pep-0008/