Путь развития Python - от ученика к гуру

Если вы используете MySQL, существует метод REGEXP, который вы можете использовать ...

http://dev.mysql.com/doc/refman/5.1/en/ regexp.html # operator_regexp

Итак, вы должны использовать:

SELECT * FROM `shirts` WHERE `colors` REGEXP '\b1\b'

659
задан 12 revs, 3 users 69% 21 May 2013 в 18:38
поделиться

13 ответов

Я думал, что процесс освоения Python происходит примерно так:

  1. Откройте для себя list comprehensions
  2. Откройте для себя generators
  3. Включайте map, reduce, filter, iter, range, xrange часто в свой код
  4. Откройте для себя Decorators
  5. Пишите рекурсивные функции, много
  6. Откройте для себя itertools и functools
  7. Читайте Real World Haskell (читать бесплатно онлайн)
  8. Перепишите весь свой старый код на Python с тоннами функций высшего порядка, рекурсии и прочего.
  9. Раздражайте своих коллег по кабинету каждый раз, когда они представляют вам класс по Python. Утверждайте, что его можно "лучше" реализовать как словарь плюс несколько функций. Примите функциональное программирование.
  10. Откройте для себя паттерн Стратегия, а затем все те вещи из императивного кода, которые вы так старались забыть после Haskell.
  11. Найдите баланс.
471
ответ дан 22 November 2019 в 21:47
поделиться

Поймите самоанализ

  • напишите dir () эквивалент
  • написать эквивалент type ()
  • выяснить, как «обезьяна-патч»
  • использовать модуль dis , чтобы увидеть, как работают различные языковые конструкции

Выполнение этих действий

  • даст вам хорошие теоретические знания о том, как реализован python
  • даст вам хороший практический опыт в программировании нижнего уровня
  • даст вам хорошее интуитивное понимание структур данных python
59
ответ дан 22 November 2019 в 21:47
поделиться

Не совсем то, о чем вы просите, но я думаю, что это хороший совет.

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

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

Я дам вам самый простой и самый эффективный совет, который, я думаю, вам может дать любой: код .

Вы можете лучше использовать язык (что подразумевает его понимание) только с помощью кодирования . Вы должны активно получать удовольствие от программирования, вдохновляться, задавать вопросы и самостоятельно находить ответы.

Есть лишний час? Напишите код, который перевернет строку, и найдите наиболее оптимальное решение. Свободный вечер? Почему бы не попробовать почистить веб-страницы. Прочтите код других людей. Посмотрите, как они поступают. Спросите себя, что бы вы сделали.

Когда мне скучно за компьютером, я открываю IDE и code-storm. Я записываю идеи, которые кажутся интересными и сложными. Сокращатель URL-адресов? Конечно, я могу это сделать. О, я научился преобразовывать числа из одной базы в другую в качестве побочного эффекта!

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

41
ответ дан 22 November 2019 в 21:47
поделиться

Вы видели книгу « Биоинформатическое программирование с использованием Python »? Похоже, вы точно являетесь членом его фокус-группы.

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

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

Позже меня научили питону на одном из первых курсов в университете. Следующим летом я практиковался с PythonChallenge и с проблемами из Google Code Jam . Решение этих проблем помогает как с алгоритмической точки зрения, так и с точки зрения изучение того, что Python может делать, а также как манипулировать им, чтобы максимально использовать возможности Python.

По тем же причинам я слышал, что код гольф тоже работает, но я никогда не пробовал его на себе.

10
ответ дан 22 November 2019 в 21:47
поделиться

Загрузить Twisted и просмотрите исходный код. В них используются довольно продвинутые методы.

20
ответ дан 22 November 2019 в 21:47
поделиться

Google недавно выпустил онлайн-класс Python («класс» как «курс обучения»).

http://code.google.com/edu/languages/google-python-class/

Я знаю, что это не ответ на ваш полный вопрос, но я думаю, что это отличное место для начала!

23
ответ дан 22 November 2019 в 21:47
поделиться

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

Например, если вы создаете сайт на Django , на многие вопросы, которые могут вас поставить в тупик, можно ответить, посмотрев, как Django реализует рассматриваемую функцию.

Таким образом вы продолжите подбирать новые идиомы, стили кодирования и трюки Python . (Некоторые из них будут хорошими, а некоторые - плохими.)

И когда вы увидите что-то Pythony, которое вы не понимаете в исходном коде, перейдите на канал IRC #python , и вы обнаружите множество «языковых юристов» с радостью объяснят.

Накопление этих небольших разъяснений за годы приводит к гораздо более глубокому пониманию языка и всех его входов и выходов.

108
ответ дан 22 November 2019 в 21:47
поделиться

Посмотрите эссе Питера Норвига о том, как стать мастером-программистом за 10 лет: http: // norvig .com / 21-days.html . Держу пари, что это верно для любого языка.

67
ответ дан 22 November 2019 в 21:47
поделиться

Поймите (более глубоко) типы данных Python и их роль в отношении управления памятью

Как известно некоторым из вас в сообществе, Я преподаю курсы Python , наиболее популярными из которых являются комплексный курс Intro + Intermediate, а также «продвинутый» курс, который знакомит с различными областями разработки приложений.

Довольно часто мне задают вопрос, похожий на такой: «Что мне следует пройти: ваш вводный или продвинутый курс? Я уже занимаюсь программированием Python в течение 1-2 лет, и я думаю, что вводный курс для меня слишком прост, поэтому Я бы хотел сразу перейти к продвинутому ... какой курс вы порекомендуете? »

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

Для этого я указываю им на этот простой вопрос викторины из двух частей: Ex1: x=42; y=x; x+=1; print x,y Ex2: x=[1,2,3];y=x;x[0]=4;print x,y

Часто они могут получить результат, но почему сложнее и, что гораздо важнее, ответ ... Я бы взвесил результат как 20% ответа, в то время как ответ «почему» получил 80% балла.Если они не могут понять почему, независимо от того, какой у них опыт работы с Python, я всегда буду направлять людей на комплексный вводный + промежуточный курс, потому что я провожу одну лекцию по объектам и управлению памятью до такой степени, что вы сможете ответить с помощью вывод и почему с достаточной уверенностью. (То, что вы знаете синтаксис Python через 1-2 года, не делает вас готовым выйти за рамки ярлыка «новичок» до тех пор, пока вы не намного лучше поймете, как Python работает скрытно.)

Дальнейшее исследование требовать подобный ответ еще сложнее, например,

Пример 3

x = ['foo', [1,2,3], 10.4]
y = list(x) # or x[:]
y[0] = 'fooooooo'
y[1][0] = 4
print x
print y

Следующие темы, которые я рекомендую, - это хорошее понимание подсчета ссылок, изучение того, что означает «интернирование» (но не обязательно его использование), изучение мелких и глубоких копий (как в Примере 3 выше), и, наконец, взаимосвязи между различными типами и конструкциями в языке, то есть списками и кортежами, словарями и наборами, представлениями списков и выражениями генератора, итераторами и генераторами и т. д .; однако все эти другие предложения - отдельная статья в другой раз. Надеюсь, это поможет тем временем! : -)

пс. Я согласен с другими отзывами о том, чтобы лучше познакомиться с интроспекцией, а также изучить исходный код других проектов и добавить сильный «+1» к обоим предложениям!

ппс. Кстати, отличный вопрос. Мне жаль, что я не был достаточно умен вначале, чтобы задать что-то подобное, но это было давно, и теперь я пытаюсь помочь другим с моим многолетним постоянным программированием на Python !!

92
ответ дан 22 November 2019 в 21:47
поделиться

Тщательно понять все типы и структуры данных

Для каждого типа и структуры напишите серия демонстрационных программ, которые проверяют каждый аспект типа или структуры данных. Если вы это сделаете, возможно, стоит записать в блог заметки по каждому из них ... это может быть полезно многим людям!

12
ответ дан 22 November 2019 в 21:47
поделиться

У вас уже есть много материала для чтения, но если вы справитесь с большим объемом, я рекомендую вам узнать об эволюции Python, прочитав Предложения по усовершенствованию Python, особенно «Готовые» PEP и «Отложенные , Брошенные, отозванные и отклоненные "ПДЛ".

Увидев, как изменился язык, какие решения были приняты и их обоснование, вы усвоите философию Python и поймете, как возникает «идиоматический Python».

http://www.python.org/dev/peps/

6
ответ дан 22 November 2019 в 21:47
поделиться
Другие вопросы по тегам:

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