Предикатные методы строк: is*() и isidentifier()
less_11__string_methods/theory_01__predicates.md
Сводная таблица из четырнадцати предикатных методов строк (isalpha, isdigit, isalnum, isspace, islower, isupper, istitle, startswith, endswith, isdecimal, isnumeric, isascii, isprintable, isidentifier) с примером и антипримером для каждого. Отдельно углублённо разобран isidentifier() — правила допустимого имени переменной в Python (буквы Unicode, цифры не первым символом, подчёркивание) и важная ловушка: isidentifier() не проверяет совпадение с ключевым словом — для этого нужен модуль keyword.
- Таблица 14 предикатов: isalpha, isdigit, isalnum, isspace, islower, isupper, istitle…
- startswith()/endswith() как часть той же таблицы предикатов
- Правила идентификатора: буквы Unicode, цифры не в начале, _
- "1var".isidentifier() → False, "привет".isidentifier() → True
- "for".isidentifier() → True — ловушка, не проверяет ключевые слова
- keyword.iskeyword("for") → True — правильная проверка
Показать начало файла (91 строк всего)
## Методы проверки предиката
В программировании **предикат** — это функция/метод, которая возвращает логическое значение `True`/`False`
| Метод | Описание | Пример (✅ True) | Антипример (❌ False) |
|-------|---------------------------------------------------------------------------------------------------|--------------------------------------| -------------------------------------- |
| `isalpha()` | Проверяет, состоит ли строка <br> только из букв. | `"Привет".isalpha() → True` | `"Hello123".isalpha() → False` |
| `isdigit()` | Проверяет, состоит ли строка <br> только из цифр. | `"12345".isdigit() → True` | `"12.3".isdigit() → False` |
| `isalnum()` | Проверяет, состоит ли строка <br> только из букв и цифр. | `"Python3".isalnum() → True` | `"Hello!".isalnum() → False` |
| `isspace()` | Проверяет, состоит ли строка <br> только из пробельных символов. | `" ".isspace() → True` | `" a ".isspace() → False` |
| `islower()` | Проверяет, все ли буквы <br> строки в нижнем регистре. | `"python".islower() → True` | `"Python".islower() → False` |
| `isupper()` | Проверяет, все ли буквы <br> строки в верхнем регистре. | `"HELLO".isupper() → True` | `"Hello".isupper() → False` |
| `istitle()` | Проверяет, каждое ли слово <br> начинается с заглавной буквы и продолжается строчными. | `"Hello World".istitle() → True` | `"Hello world".istitle() → False` |
| `startswith()` | Проверяет, начинается ли строка <br> с указанной подстроки. | `"Python".startswith("Py") → True` | `"Python".startswith("on") → False` |
| `endswith()` | Проверяет, заканчивается ли строка <br> указанной подстрокой. | `"Python".endswith("on") → True` | `"Python".endswith("Py") → False` |
| `isdecimal()` | Проверяет, состоит ли строка <br> только из **десятичных** цифр. | `"123".isdecimal() → True` <br> `"²".isdigit() → True` | `"²".isdecimal() → False` |
| `isnumeric()` | Проверяет, состоит ли строка <br> только из числовых символов <br> (в т.ч. дробей, римских цифр). | `"Ⅷ".isnumeric() → True` | `"12.5".isnumeric() → False` |
| `isascii()` | Проверяет, состоит ли строка <br> только из ASCII-символов (0–127). | `"Hello!".isascii() → True` | `"Привет".isascii() → False` |
| `isprintable()` | Проверяет, все ли символы <br> строки — печатаемые. | `"Hello 123".isprintable() → True` | `"Hello\nWorld".isprintable() → False` |
| `isidentifier()` | Проверяет, является ли строка <br> допустимым идентификатором в Python. | `"variable_1".isidentifier() → True` | `"1variable".isidentifier() → False` |
## `isidentifier()`.
### Что такое идентификатор в Python
**Идентификатор** — это имя, которое можно использовать для:
* переменных,
* функций,
* классов,
* модулей и т.д.
Примеры идентификаторов:
```python
x
my_var
data123
_underscore
```
---
### Идентификатор в Python МОЖЕТ:
- Может содержать **буквы** (латиница, символы Unicode — например, кириллица).
- Может содержать **цифры**, но **не начинаться** с них.
- Может содержать **подчёркивание `_`**.
### Идентификатор в Python НЕ МОЖЕТ:
- Не может содержать **пробелы, спецсимволы** (`-`, `!`, `@`, и т.д.).
- Не может быть **пустой строкой**.
- Не может совпадать с **ключевым словом Python** (например, `for`, `class`, `def`).
---
…