Функции в Python
Функции обозначаются def и могут содержать/не содержать возврат значения return:
def имя_фукнции(аргумент_1, аргумент_2, аргумент_3):
# Тело фукции
return значение_1, значение2
# Вызов функции в коде
a, b = имя_фукнции(1, 2, 3)Если функция не содержит return в явном виде, функция будет возвращать None.
Некоторые функции можно описать в одну строку с помощью lambda:
имя_фукнции = lambda аргумент_1, аргумент_2: (формула для возвращаемого значения)Как видно, в Python функции тоже объекты, и их можно записывать как “переменные”.
Списки в Python
- Пусть есть список
a = [10,20,30,40,50]a.append(60)добавит элемент в конец[10,20,30,40,50,60]a.extend([60,70])расширит список[10,20,30,40,50,60,70]a.insert(0,-10)добавит элемент в определённое место[-10,10,20,30,40,50]a.remove(i)удалит элемент с индексом в массивеadel a[i]аналогично
- Условная сортировка через функцию
sorted()с ключомkey:
a = [['a',3], ['b',2], ['c',1]]
b = sorted(a, key = lambda e: e[1])List comprehension
Автоматическое заполнение массива в 1 строку:
# Без условия
a = [(итеративная формула) for (переменная цикла) in (контейнер)]
# С условием
a = [(итеративная формула) for (переменная цикла) in (контейнер) if (условие переменной цикла)]Примеры:
a = [i for i in range(5)] # -> [0, 1, 2, 3, 4]
b = [i**2 for i in range(5)] # -> [0, 1, 4, 9, 16]
c = [1 for i in range(5)] # -> [1, 1, 1, 1, 1]
d = [i for i in range(10) if i % 2 == 0] # -> [0, 2, 4, 6, 8]Разбиение строки ввода на массив из целых чисел:
a = [int(s) for s in input().split()]Использование list comprehension в заполнении словаря:
a = {i: i**3 for i in range(5)} # -> {0: 0, 1: 1, 2: 8, 3: 27, 4: 64}Starred expression
Оператор * “достаёт” внутренность списка, если это есть куда “вложить”:
a = [1,2,3]
b = [a,4,5] # -> [[1,2,3],4,5]
c = [*a,4,5] # -> [1,2,3,4,5]Работа с файлами
Файл открывается функцией open; работа с ним проводится через переменную (в нашем случае, f):
# "r" - read / открыть на чтение
# "w" - write / открыть на запись "заново"
# "a" - appebd / открыть на запись "в дополнение"
f = open("путь/к/файлу.txt", "r")
# Можно сразу прочитать весь файл. После этого работа с ним закончится - в переменной f больше "ничего не будет".
s = f.read()
# В конце, работу с файлом обязательно завершить
f.close()Чтобы не завершать работу с файлом вручную, можно пользоваться with:
with open("путь/к/файлу.txt", "r") as f:
s = f.read()Можно построчно обрабатывать файл, использовав его как контейнер:
with open("путь/к/файлу.txt", "r") as f:
for line in f:
# Здесь, line - строка из f
print(line.strip()) # strip() убирает перенос строки из конца строкиВызов исключений
assert условиевызывает ошибку AssertionError при невыполнении условияraise имя_исключенияспециальный вызов ошибки- Можно добавить пояснение:
raise имя_исключения("Пояснение") - Без указания имени исключения
raiseповторно вызывает последнее исключение
- Можно добавить пояснение:
- Некоторые типы исключений:
- IndexError: индекс при обращении к элементу находится вне допустимого диапазона
- TypeError: операция / функция применяется к значению недопустимого типа
- ValueError: операция / функция получают объект корректного типа с некорректным значением
- ZeroDivisionError: деление на ноль
- OSError: ошибки системы (невозможно найти файл, память диска заполнена и т.д.)
- Обработка ошибок через оператор
try:
try:
# Блок кода с вероятной ошибкой
except:
# Выполняется при срабатывании любой ошибки
except ValueError:
# Выполняется при срабатывании ошибки типа ValueError
else:
# Выполняется, если описанные ошибки не выскочила
finally:
# Выполняется всегда