ЭВТЮМИЯ

Экранирование и кодирование символов

Основы Python | 30.12.2024
74 0

Программирование на Python требует внимания ко многим деталям, особенно когда речь идет о работе с текстом.

В Python некоторые последовательности символов, начинающиеся с обратного слэша (\), интерпретируются особым образом. Такие последовательности называют управляющими символами или escape-последовательностями. Они необходимы для задания специфичных действий в тексте, таких как перенос строки, табуляция или возврат каретки.

Символ переноса строки (\n) позволяет вывести на экран несколько строк текста без использования дополнительных вызовов функции print():

poem = "Духовной жаждою томим,\nВ пустыне мрачной я влачился."
print(poem)

Здесь символ \n указывает Python, что после "Духовной жаждою томим," следует перейти на новую строку:

Методы поиска и проверки строк

Основы Python | 05.03.2025
74 0

При работе со строками довольно часто возникает необходимость найти нужное сочетание символов внутри строки или подсчитать, сколько раз оно встречается в этой строке. Также часто требуется убедиться в том, что строка соответствует нужному формату, например, состоит только из чисел или начинается с определённой строки.

Для поиска подстроки в строке Python предоставляет два основных метода: str.index() и str.find(). Оба метода предназначены для обнаружения первого вхождения указанной подстроки и возвращают индекс начала этого вхождения.

Ключевое различие между этими двумя методами заключается в их поведении, когда подстрока не найдена:

  • метод str.index() в такой ситуации вызовет исключение ValueError, что приведёт к прерыванию выполнения программы;
  • метод str.find() просто вернёт -1, и программа дальше продолжит работу.

Функции высшего порядка

Основы Python | 12.05.2025
73 0

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

И если функция делает хотя бы одно из двух:

  • принимает одну или несколько других функций в качестве аргументов;
  • возвращает функцию как результат своей работы.

То такая функция называется функцией высшего порядка.

Одной из таких функций является функция sorted(), с которой мы познакомились, когда говорили о сортировке списков. Ей можно передать функцию, которая будет применяться к каждому элементу итерируемого объекта перед сортировкой:

vegetables = ["Баклажан", "Щавель", "Тыква", "Сельдерей", "Спаржа"]
print(sorted(vegetables, key=len))  # Сортировка по длине строки
# Вывод: ['Тыква', 'Щавель', 'Спаржа', 'Баклажан', 'Сельдерей']

Поэтому функция sorted() является функцией высшего порядка. Кроме неё в Python представлены функции map() и filter().

Замыкание и декораторы

Основы Python | 30.05.2025
73 0

В Python всё является объектом, поэтому функции могут принимать, и возвращать другие функции, а также одна функция может содержать другую. Всё вместе это лежит в основе таких понятий, как замыкание и декораторы, позволяющие расширять возможности функций.

Вложенная функция всегда имеет доступ к переменным, определенным в её внешней функции. И этот доступ – не просто временная передача значений, а постоянная ссылка на ячейки памяти, где эти значения хранятся.

Ключевой момент, который превращает этот механизм в замыкание, происходит, когда внешняя функция завершает свою работу. В обычной ситуации, когда функция заканчивает выполняться, все её локальные переменные уничтожаются. Однако это не происходит, если выполняются следующие ключевые условия:

  • Внутренняя функция использует переменные внешней функции.
  • Внешняя функция возвращает внутреннюю функцию.

В таком случае Python понимает, что вложенная функция всё ещё нуждается в переменных из внешней области, и эти переменные «замыкаются» вместе с вложенной функцией. Они не являются копией, а представляют собой прямую связь с исходными данными.

Комментарии

Основы Python | 08.12.2024
72 0

Не весь код, который мы пишем, предназначен для непосредственного выполнения компьютером. Иногда нам нужно оставлять пояснения, заметки или временно отключать фрагменты кода. Для этого в программировании используются комментарии.

В Python однострочные комментарии начинаются с символа решетки (#). Все, что следует за ним до конца строки, игнорируется интерпретатором. Это позволяет добавлять в код объяснения или напоминания:

print("Привет, мир!") # Это поясняющий комментарий 

Также в комментариях можно указать ожидаемый результат выполнения кода:

print("Привет, мир!") 
# Вывод: Привет, мир!

Кроме пояснений комментарии позволяют быстро отключить отдельные участки кода без их удаления:

# Раскомментируйте эту команду, чтобы вывести сообщение
# print("Заблокированное сообщение")

Основы работы со строками

Основы Python | 25.12.2024
71 0

Строки в Python представлены типом str (от англ. string – строка) и представляют собой упорядоченные последовательности символов, заключённые в кавычки. Строки используются для хранения и обработки текстовой информации. Будь то имена, адреса, тексты книг или любые другие данные, которые можно представить в виде текста, в Python они обычно обрабатываются как строки.

Для создания строковой переменной достаточно заключить любой текст в одинарные (') или в двойные (") кавычки:

message = 'Что на ужин?'
reply_message = ""  # Пустая строка – тоже строка

Введение в коллекции

Основы Python | 14.02.2025
68 0

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

Коллекции в Python представлены такими типами данных, как уже хорошо знакомые нам строки, а также списки, кортежи, множества и словари.

Каждая встроенная коллекция обладает уникальным набором свойств, определяемых её упорядоченностью, изменяемостью и требованиями к уникальности элементов. Выбор подходящей коллекции зависит от конкретной задачи и требований к хранению и обработке данных.

Циклы

Основы Python | 15.01.2025
67 0

В процессе разработки программ часто возникает необходимость многократно выполнять одни те же действия. Например, представим, что мы управляем роботом на клетчатом поле, и за одно действие можем переместить его только на одну клетку. Чтобы сдвинуть его на 3 клетки, нам придется 3 раза повторить команду перемещения:

step = 0
step += 1
print(f"Шагов сделано: {step}") 
# Вывод: Шагов сделано: 1
step += 1
print(f"Шагов сделано: {step}")
# Вывод: Шагов сделано: 2
step += 1
print(f"Шагов сделано: {step}")
# Вывод: Шагов сделано: 3

Но что, если нужно переместить робота на 100 или даже 1000 клеток? Повторять одну и ту же команду столько раз достаточно утомительно. Именно для таких ситуаций в программировании используются циклы – специальные конструкции, позволяющие многократно повторять определенный фрагмент кода, называемый телом цикла. Они существенно упрощают решение задач, связанных с многократным выполнением одинаковых действий.

Множества

Основы Python | 25.03.2025
66 0

Множества в отличие от списков и кортежей могут хранить объекты только неизменяемого типа данных, например, числа или строки. Также они обладают двумя ключевыми особенностями: неупорядоченностью и уникальностью. К элементам множества нельзя обратиться по индексу, так как они не хранятся в каком-либо определенном порядке, а также множества игнорируют повторяющиеся элементы, оставляя только уникальные значения.

При этом множества изменяемы, поэтому большинство их методов изменяют исходное множество и возвращают None.

Любую встроенную коллекцию можно преобразовать в множество с помощью функции set():

numbers = [1, 2, 2, 3, 3, 3]
print(set(numbers)) 
# Вывод: {1, 2, 3}

Генераторы коллекций

Основы Python | 10.04.2025
65 0

Иногда возникает необходимость создать новую коллекцию на основе уже существующей. Представьте, у вас есть список чисел, и вам нужно получить новый список, содержащий только квадраты чётных чисел из этого списка.

Один из способов сделать это – перебрать все элементы исходного списка в цикле for и добавить в новый список квадраты тех чисел, которые делятся на 2 без остатка:

numbers = [1, 2, 3, 4, 5]
squared_numbers = []
for n in numbers:
    if n % 2 == 0:
        squared_numbers.append(n ** 2)
print(squared_numbers)
# Вывод: [4, 16]

Этот код отлично справляется со своей задачей, но в Python существует более компактный способ создания списков, называемый генератором списка (или списочным выражением). Он позволяет создать новый список всего в одну строку кода.