Как-то у нас с менеджерами зашел разговор о том, сложно ли изучить язык программирования, если просит об этом заказчик. В частности был разговор о языке Python. Попытаюсь развеять миф о сложности освоения Python.
Python — это не .Net и не Java, где приходится осваивать довольно сложную библиотеку базовых классов. Здесь нет сложности в настройки IDE. Как-то работая в проекте на Java мне необходимо было потратить два дня только на настройку Netbeans.
Python идет в одном ряду с PHP и Perl. Чем-то похож на VB.NET. Кроме того он еще проще в освоении, чем PHP. Чтобы начать программировать в языках такого уровня необходимо только скачать бинарники и тупо начать, даже если вы ничего не знаете. Знания будут добываться по мере решения проблем.
Давайте рассмотрим, чем же отличаются PHP и Python. Я не буду описывать все тонкости, отмечу лишь самые главные моменты, которые помогут преодолеть барьер сложности.
- В python как и в php тип переменных назначается динамически, НО динамически не преобразуется. Т.е. вы не можете как в PHP использовать число там, где должна быть строка.
- Забудьте про фигурные скобочки для выделения блоков кода. Главное это отступы. Все структурирование осуществляется с помощью отступов. Вместо открывающей фигурной скобочки используется двоеточие. Конец блока определяется с помощью отступов. Чтобы разбить строку на несколько, используется обратный слэш в конце (аналог подчеркивания в VB.NET).
- Вместо слово function нужно писать def
- Все сущности включая функции являются объектами
- Определение ассоциативного массива (называется dictionary — словарь в python) похоже на JSON: a = {«server»:»mpilgrim», «database»:»master»}
- Определение списка тоже вам напомнит JSON: li = [«a», «b», «mpilgrim», «z», «example»]
- В язык встроены довольно мощные средства по манипуляции со списками:
- Получение предпоследнего элемента: li[-1]
- Выделение подсписка: li[1:3]. Можно даже так: li[3:] или так: li[:]
- Можно складывать и размножать списки ( list * 3 = list + list + list).
- Применение выражения ко всем элементам списка с помощью конструкции [elem*2 for elem in li]. Так мы получим новый список, где каждый элемент старого списка умножен на два. Список в такой операции может быть списком кортежей, тогда после for указывается не одна, а несколько переменных. Более подробно см. http://ru.diveintopython.org/odbchelper_map.html и http://ru.diveintopython.org/apihelper_filter.html
- Есть упрощенный вариант списков — кортежи (tuple), которые объявляются с помощью круглых скобок вместо квадратных. Их можно назвать константными списками, которыми нельзя так легко манипулировать. Кортежы более быстро работают и могут быть ключами для словарей.
- В python есть возможность использовать кортеж слева от знака присваивания. Вот как можно быстро присвоить значения константам от 0 до 6: (MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY) = range(7)
- Еще одна фича python — это подстановка значений в строку по шаблону: «%s is not a good password for %s» % (pwd, uid). Данное выражение вернет отформатированную строку аналогично функции sprintf.
- Вместо explode и implode используйте методы строки split и join
- Подгрузка внешнего файла осуществляется с помощью import module_name. После этого вы можете обращаться к функциям модуля с помощью module_name.func_name. Если вы не хотите постоянно указывать префикс «module_name.», то можете использовать конструкцию from module_name import *, либо from module_name import a, b, c. Здесь a,b,c — элементы, которые мы хотим импортировать в модуль.
- В функции можно устанавливать значения по умолчанию: def help(object, spacing=10, collapse=1)
- Как и в VB.NET при вызове функции можно указывать названия параметров, которым назначаются значения: help(spacing=15, object=odbchelper)
- В python есть lambda-функции. Ее можно определить как объект-функция без названия. Например: lambda x: x*2. Это функция, которая возвращает аргумент умноженный на два. Тут же можно вызвать функцию: (lambda x: x*2)(3)
Объектно-ориентированное программирование на python
- Объявление класса: «class FileInfo:»
- Объявление с наследованием: «class FileInfo(UserDict):»
- Аналог конструктора — метод __init__. Вызывается после создания объекта.
- Первый аргумент метода — всегда текущий экземпляр объекта. Общепринято называть self.
- Создание объекта: obj = FileInfo(x)
- Сеттеры и геттеры. Есть специальные названия методов __setitem__ и __getitem__. Если вы их объявили в классе, то можете использовать объект как словарь: f[«name»]
- Если вы внутри класса объявите переменные, то это будут статические переменные и ими можно пользоваться без создания класса. Если вы хотите создать настоящие переменные-члены класса, то нужно их присвоить в методах с помощью self.var_name = value.
- Если вы хотите объявить приватный метод, то объявите его с помощью двух знаков подчеркивания в имени: __method. Не используйте два знака подчеркивания в конце. Это особенность системных методов. В действительности в python нет ничего приватного. Если вы захотите до чего-нибудь добраться, то вы сможете это сделать.
Материал составлен на основе книги В глубь языка Python
Метки: разработка по