Python и с чем его едят!
Язык программирования Python… Как говорит википедия
Python - высокоуровневый язык программирования общего назначения, ориентированный на повышение производительности разработчика и читаемости кода
Это динамически типизированный, интерпретируемый язык, с поддержкой нескольких парадигм программирования (структурное, объектно-ориентированное, функциональное, императивное, аспектно-ориентированное)
Язык высокого уровня с высокой степенью абстракции.
Портирован на все основные типы платформ от *nix систем до windows и смартфонов.
Существует две основные ветки Python ветка 2.x и ветка 3.x. Код для версии 3.x обратно не совместим с веткой 2.x, однако и исполнение кода 2.x в среде 3.x часто будет выдавать ошибки.
Ниже приведен пример выражений в Python
>> 2+3
5
>> 2**3
8
>> print("Hello, %s!!"%("Vasya"))
Hello, Vasya!!
>> name="Vasya"
>> print(f"Hello, {name}!!")# начиная с версии 3.6
Hello, Vasya!!
Python можно использовать как для написания программ, так и для написания shell-скриптов.
Исполняемый файл
В *nix системах для создания исполняемого файла необходимо в первой строке файла с программой написать:
#!/usr/bin/env python3
и указать атрибуты файлу
chmod u+x file.py
здесь мы разрешаем исполнение файла его создателю.
В этом блоге будет рассматриваться ветка 3.x
Какой дистрибутив ставить?
Возникает вполне резонный вопрос: где брать Python и как его ставить? Практически во всех *nix подобных операционных системах Python уже установлен с правами «суперпользователь». Это не всегда удобно. Кроме того, в некоторых операционных системах (MacOS) до сих пор используется 2-я ветка питона, в то время как на других (ArchLinux, Manjaro, etc..) предустановлена 3-я ветка. Также версии интерпретатора могут отличаться, а соответственно, возможны проблемы совместимости готовой программы.
Гораздо удобнее устанавливать отдельно Python с правами пользователя. Это можно сделать вручную, собственными силами скачивать интерпретатор, устанавливать и настраивать его, собирать все необходимые пакеты и прочее. Можно пойти другим путем и воспользоваться готовым решением:
На мой взгляд, наиболее удобным является Miniconda, и этому способствует ряд свойств этого дистрибутива:
- Наличие собственной системы управления пакетами
- математические библиотеки NumPy, SciPy, etc. собраны с библиотеками Intel MKL.
- все необходимые библиотеки и компоненты (не питоновские в том числе) устанавливаются в локальную папку, не захламляя систему.
- можно установить несколько окружений с различными набором пакетов и версией интерпретатора
И все же как устанавливать?
Переходим на сайт Miniconda и скачиваем нужный дистрибутив (в нашем случае версия 3.6) для своей архитектуры и выполняем установку посредством запуска файла. Подробно об этом написано на странице инструкция по установке.
Установка пакетов
Установка пакетов происходит с помощью команды conda install <имя пакета>
.
В системе *nix это можно сделать из командной строки, в системе windows нужно запускать Anaconda Prompt - командная строка с переменными окружения.
Для своей работы я устанавливаю следующий комплект пакетов:
- Numpy - библиотека для работы с многомерными массивами
- SciPy - библиотека - надмножество NumPy, представляет набор функция для анализа (интерполяция, обработка сигналов, интегрирование и прочее..)
- Matplotlib - библиотека дву- и трехмерной графики
- Pandas - библиотеками для работы с табличными данными и рядами
- IPython - оболочка -интерпретатор
В случае, если для работы нужно использовать методы минимизации, в этом случае можно дополнительно установить LmFit. Это оболочка над функциями минимизации из пакета SciPy, которая облегчает работу с функциями. Добавляет ограничения на диапазон принимаемых значений искомых параметров.
Интересным является и пакет NlOpt. Здесь также реализовано множество алгоритмов глобальной и локальной минимизации/максимизации с как с вычислением градиента, так и без него. Важно! Этот пакет нужно ставить из исходников.
Пакеты для работы с научными форматами данных
Если вдруг вам в работе придется столкнуться с файлами netCDF и/или HDF5/HDF4 вы можете работать с ними с помощью следующих пакетов:
Первый из них поддерживает работу с файлами netCDF версии 3 и 4, последние два ориентированы на работу с форматом hdf5.