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

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

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

Какие-либо подсказки относительно того, как выйти из этого шаблона "Записи Java в Python"?

Спасибо!

31
задан nicael 21 May 2014 в 21:43
поделиться

12 ответов

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

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

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

24
ответ дан 27 November 2019 в 22:17
поделиться

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

7
ответ дан 27 November 2019 в 22:17
поделиться

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

0
ответ дан 27 November 2019 в 22:17
поделиться

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

-2
ответ дан 27 November 2019 в 22:17
поделиться

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

.
6
ответ дан 27 November 2019 в 22:17
поделиться

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

4
ответ дан 27 November 2019 в 22:17
поделиться

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

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

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

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

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

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

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

Но главная причина в том, что Python является интерпретируемым языком, а некоторые конструкции намного быстрее, чем эквивалентный C / Java-подобный код. Например, понимание списков обычно намного быстрее, чем эквивалентный цикл for, который перебирает индексы списка и обращается к каждому элементу по индексу. Это очень объективное преимущество, и ИМХО большая часть мышления «Python слишком медленный» проистекает из использования кода в стиле Java, вставленного в Python.

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

Править:

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

5
ответ дан 27 November 2019 в 22:17
поделиться

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

3
ответ дан 27 November 2019 в 22:17
поделиться

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

Также ознакомьтесь с этим похожим вопросом SO , который я недавно отправил, когда находился в аналогичной должности.

2
ответ дан 27 November 2019 в 22:17
поделиться

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

3
ответ дан 27 November 2019 в 22:17
поделиться

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

0
ответ дан 27 November 2019 в 22:17
поделиться

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

Настаивать. :)

1
ответ дан 27 November 2019 в 22:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: