Морфемика и Морфология
морфемы
Введение
Морфемы в Python — это «кирпичики», из которых строятся осмысленные единицы языка (имена переменных, функций, классов). Если разделить такой «кирпичик» на части, каждая часть все еще будет что-то значить или указывать на какую-то роль в коде.

В традиционной лингвистике морфология изучает внутреннее устройство слов, систему словоформ и грамматических значений, выраженных внутри слова. Морфемика и словообразование — это важные разделы языкознания, изучающие внутреннюю структуру слова и его образование.

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

Морфемы
Та часть идентификатора, что содержит в себе ключевую «идею» переменной или функции — это корень или основа слова
# Корневые морфемы, соединенные подчеркиванием
user_name   # user + name

# Суффиксоподобный элемент -er указывает на исполнителя действия
parser      # parser (читатель, писатель)

# Префиксоподобный элемент min- уточняет значение
min_age     # min + age (минимальный возраст)
В соответствии с соглашением PEP 8 идентификаторы, которые воспринимаются интерпретатором как токены, должны носить интуитивно понятные для программиста имена

Конфиксы (двойное подчёркивание): магические методы

Двойное подчёркивание с обеих сторон имени магических методов (__init__, __str__) является целостным маркером, придающим методу особую роль. Он сигнализирует интерпретатору, что такой метод не требует явного вызова в пользовательском коде, а автоматически активируется при определённых событиях (создание объекта, применение оператора, вызов встроенной функции).
В русистике конфиксами называют «прерывистые морфемы, которые предполагают друг друга и выступают комбинированно». Типичным примером конфикса в русском языке является сочетание приставки раз- и постфикса -ся в глаголах «разогнаться», «развалиться»: ни приставка, ни постфикс по отдельности не передают того же грамматического значения, что их совместное употребление.
class Book:
def __init__(self, title): # __init__ — магический метод (конфикс)
self.title = title

def __str__(self): # __str__ — магический метод (конфикс)
return self.title
Словообразование
Внутри Python некоторые способы словообразования недоступны для программиста, а направлены исключительно на машину (интерпретатор), также они предписаны и не могут подвергаться изменениям, имеют жестко зафиксированные значения. Другие же способы словообразования в Python несут для программиста свободный «творческий» характер.
Закрытый (системный, предустановленный)
Открытый (пользовательский, человеческий)
Усечение в именах встроенных типов данных (str, int)
Сложение через snake_case
Ключевые слова (def, if, for)
Префиксоподобные и суффиксоподобные элементы
В соответствии с соглашением о стиле PEP 8 (Python Enhancement Proposal 8) snake_case (также известный как «змеиный регистр») — это стиль написания идентификаторов (имён переменных, функций, атрибутов), при котором все слова пишутся строчными (маленькими) буквами и разделяются символом нижнего подчёркивания _.

Словообразовательные модели

Модель
В Python
В русском языке
Аффиксация
min_age (префикс min-), parser (суффикс -er)
при-ехать, чита-тель
Сложение
user_name (через _), UserProfile (PascalCase)
пар-о-ход, интернет-магазин
Аббревиация
np (import numpy as np)
вуз (высшее учебное заведение)
Усечение
int ← integer
кино ← кинематограф
Субстантивация
my_max = max (функция как объект)
больной (прилагательное → существительное)
Что касается морфологии, в Python она тоже ограничена, однако можно выделить параллели между частями речи, основанные на синтаксической роли и семантике лексемоподобных токенов, а также типов данных. Тип данных задаёт «грамматическую сочетаемость»: набор методов и операторов, которые можно применить к объекту.
Тип данных
Аналог по части речи
Примеры методов, операций (сочетаемость)
int, float (целые и вещественные числа)
Имя числительное (количество)
+, -, *, /, %, **, сравнение (<, >, ==) — как числительные, которые «сочетаются» с арифметическими действиями
str (строка)
Имя существительное / наречие (обозначение объекта или признака)
Конкатенация (+), умножение на число (*), методы .upper(), .lower(), .find(), .replace() — аналоги «склонения» и «словоизменения» (но без изменения исходного объекта)
bool (булево значение)
Краткое прилагательное / предикатив (истина/ложь)
Логические операции (and, or, not), сравнение (==, !=) — как прилагательное в роли сказуемого
list (список)
Собирательное существительное (множество)
.append(), .remove(), .sort(), индексация ([i]), срезы ([i:j]) — как «собирание» элементов и операции над множеством
tuple (кортеж)
Собирательное существительное (неизменяемое множество)
Индексация ([i]), срезы ([i:j]), но нет методов изменения — аналогия с неизменяемыми существительными (например, «студенчество» в единственном числе)
dict (словарь)
Сложное понятие (ключ → значение)
Доступ по ключу ([key]), методы .keys(), .values(), .items() — как толковый словарь: слово (ключ) и его определение (значение)
set (множество)
Собирательное существительное (уникальное множество)
.add(), .remove(), объединение (|), пересечение (&) — как множество уникальных объектов
NoneType (None)
Местоимение / частица «ничто»
Не имеет методов (кроме сравнения) — обозначает отсутствие объекта, как отрицательное местоимение «никто»
Определение типа данных (части речи)
В Python, в отличие от естественных языков, имя переменной в большинстве своём почти не содержит информации о её типе. Тип определяется объектом, на который переменная ссылается. Одна и та же переменная может в разное время ссылаться на объекты разных типов (динамическая типизация).»
Это напоминает омонимию в русском языке, где одно и то же слово может относиться к разным частям речи в зависимости от контекста («печь» — существительное и глагол).
  • [1, 2, 3] → список (list)
  • (1, 2, 3) → кортеж (tuple)
  • {«a»: 1, «b»: 2} → словарь (dict)
  • {1, 2, 3} → множество (set)
  • "строка" или 'строка' → строка (str)