Основные характеристики
- Универсальный.
- Простой.
- Интерпретируемый.
- Мультипарадигмный.
- Динамическая семантика.
- Кроссплатформенный (linux, macOS, windows, AIX, IBM i, iOS, iPadOS и др.).
Парадигмы программирования
- Императивное (процедурный, структурный, модульный подходы).
- Объектно-ориентированное.
- Функциональное.
Соглашения (PEP)
- https://www.python.org/dev/peps/
- Python Enhancement Proposals - предложения по развитию питона
- PEP8 - соглашение по стилю кодирования.
- PEP20 - Дзен питона
- PEP7 - соглашение по оформлению Си кода.
- около ~600
Соглашение по стилю кодирования
- Отступы.
- Максимальная длина строки - 79 символов.
- Пробелы
- Пустые строки
- Имена
- и многое другое
Документация
- Библиотека pydoc
- help(dict)
> help(os)
> help(dict)
class dict(object)
| dict() -> new empty dictionary
| dict(mapping) -> new dictionary initialized from a mapping object's
| (key, value) pairs
| dict(iterable) -> new dictionary initialized as if via:
| d = {}
| for k, v in iterable:
| d[k] = v
| dict(**kwargs) -> new dictionary initialized with the name=value pairs
| in the keyword argument list. For example: dict(one=1, two=2)
|
| Methods defined here:
Управление памятью
- Наличие сборщика мусора.
- Алгоритм подстчета ссылок.
- Python хранит журнал ссылок на каждый объект.
- Когда на объект нет ссылок - объект удаляется.
Присваивания и ссылки
>>> a = 7
>>> b = a
>>> a is b
True
>>> a += 1
>>> a is b
False
Скалярные (неделимые) типы данных
- Числа (целое, вещественное).
- Логический тип.
- NoneType.
Структурированные (составные) / коллекции.
- Последовательности: строка, список, кортеж, числовой диапазон.
- Множества.
- Отображения: словарь.
2 категории типов
- Мутирующие (англ. Mutable): содержимое объекта можно изменить после создания (например, список);
- Немутирующие (англ. Immutable): содержимое объекта нельзя изменить после создания (например, строка или число).
- Преимуществом немутирующих типов является гарантия неизменяемости с момента создания.
Коллекции
Коллекции — это группа типов данных, которые содержат в себе другие данные и поддерживают:
- проверку на вхождения элементов in и not in (True/False);
- определение размера len();
- возможность выполнения итераций (перемещения по элементам последовательности)
Последовательности
- Последовательность - это упорядоченная коллекция, поддерживающая индексированный доступ к элементам.
- Пять встроенных типов последовательностей: str, list, tuple и range.
- Склейка: s + t
- Индексация: s[0]
- Срез: s[start:end]
- Срез шагом: s[start:end:step]
Множества
- Множество - это неупорядоченная коллекция уникальных элементов.
- 2 класса для работы с множествами:
- set (изменяемое множество: add, remove, pop, clear);
- frozenset (неизменяемое множество).
- a = {2, 4, 6, 8, 10}
Отображения
- Отображение - это неупорядоченная коллекция пар элементов «ключ-значение».
- Класс dict
- d = {"one": 1, "two": 2, "three": 3}
- dict(one=1, two=2, three=3)
- d["one"]
Функции
- Функции определяются с помощью инструкции def
def sum(x, y):
return x + y
# Лямбда-функция
result = lambda x: len(x)
def func(*args):
return args
def func(**kwargs):
return kwargs
func(a=1, b=2, c=3)
{'a': 1, 'c': 3, 'b': 2}
Работа с файлами
f = open('test.json', 'a') # или w
f.write("Содержимое файла")
f.close()
Объектно-ориентированное программирование
- Любое значение - объект.
- Классы: class
- pass - пустой класс
- Методы класс с помощью def
Пример создания класса.
class Point2D:
"""Точка на плоскости."""
# Конструктор
def __init__(self, x, y):
self.x = x # Поля читаются и записываются через 'self'
self.y = y # 'self' указывает на текущий экземпляр класса
# Метод
def distance(self):
"""Вернуть расстояние до центра координат."""
return (self.x**2 + self.y**2)**0.5
# Инициализация
p = Point2D(3, 4)
Функциональное программирование
- map(): отображение;
- filter(): фильтрация;
- functools.reduce(): упрощение;
- lambda;
- comprehension (коллекционные включения).
Стандартная библиотека
- Математика: math, random, statistics
- Дата/время: datetime, time, calendar, pytz (временные зоны), locale
- Операционная система: sys, platform, os, shutil, subprocess, glob
- Регулярные выражения: re, regex, match.
Сторонние библиотеки
- web-приложения (Django, Flask).
- игры (Pygame).
- математические вычисления и анализ данных (NumPy, Pandas, Matplotlib).
- работа с текстовыми файлами, изображениями, аудио и видео файлами (PyMedia).
- графический интерфейс пользователя (PyQT, PyGObject).
- ИИ: Scikit-Learn
Проект Cyphon
- Прослойка между Python и C/C++
- Синтаксис как Python (есть изменения)
- Необходимо определять тип в коде
- Транслирует код в C, затем в выполняемый файл.
Проект Cyphon
def test(x):
y = 1
for i in range(1, x+1):
y *= i
return y
cpdef int test(int x):
cdef int y = 1
cdef int i
for i in range(1, x+1):
y *= i
return y