Сначала, дружок, поговорим о сути. Функция — это такой себе закуток кода, который ты один раз написал, а потом можешь использовать сто раз, не повторяясь. Не зря говорят: семь раз отмерь, один — вызывай 😄
Пишется она с помощью ключевого слова def. Например:
python def мой_функциончик(x):
return x
Вызовешь потом её — и она тебе вернёт то, что в неё положил. Всё честно, как на базаре. Написал:
python print(мой_функциончик(23))
И получил 23. Без обмана, без сюрпризов. Ну, разве что ты сам туда клоуна вместо числа засунул — тогда уж не обижайся 😁
🛠 А теперь прибарахлим её: улучшим!
Живём ведь не в каменном веке. Функции, как и люди, растут, мудреют, обретают вторую половинку. Добавим второй параметр:
python def мой_функциончик(x, a):
return x + a
Вот теперь можно сказать: двое — не трое, но уже сила. Засовываешь туда, скажем, 12 и 23 — и получаешь 35. Проверено временем и калькулятором.
python print(мой_функциончик(12, 23)) # 35
И что забавно — можешь и строки передавать, а не только числа. Функция не гордая, от слов тоже не воротит нос. Подашь ей "Привет, " и "мир" — и она тебе соберёт "Привет, мир". Вот такая умница.
🧱 Несколько строк — не беда
Функция может быть многословной, как я после второй рюмки 😅 Главное — пробелы ставь правильно. Отступы — наше всё. Как в стройотряде: шаг влево, шаг вправо — сам виноват.
python def посложнее(x, a):
результат = x + a
return результат
Работает? Ещё бы! Но ты только попробуй написать return без отступа — и Python тебе такое скажет, что у тебя волосы завьются, даже если их уже и нет 🤭
🔁 Что можно возвращать
Ах, золотое слово return… Как ключ от сейфа. С его помощью можно вернуть всё, что душа пожелает — числа, строки, списки, словари, даже кортежи. Хошь — возвращай другую функцию. Вот так:
python def создать_сумматор():
def суммируем(x, y):
return x + y
return суммируем
Вызвал создать_сумматор(), получил функцию. Потом ещё раз вызвал — получил результат. По мне — магия, не меньше. 🔮
🤷♂️ А можно ведь и ничего не возвращать
Бывает, вызываешь функцию, а она тебе: “Я тебе ничего не должна!” И это нормально.
python def молчавая():
print("Приветик!")
Такую вызываешь — и она что-то делает, но ничего не даёт взамен. Как соседка Валя: поболтать — пожалуйста, а помочь — "я спину потянула".
🔧 Аргументы по умолчанию
Иногда надо, чтобы функция была не капризной. Чтобы не ты ей, а она тебе: “Хочешь — скажи, хочешь — промолчи”. Тут нам помогают значения по умолчанию:
python def приветствие(имя="друг"):
print(f"Привет, {имя}!")
Вызовешь приветствие() — она тебе: “Привет, друг!”. А если скажешь: приветствие("Олег") — и тут она подыграет. Удобно, да? Как жена — если повезло 😅
🌌 А если аргументов дофига?
Ну, не всегда ж знаешь, сколько будет параметров. На то и есть *args и **kwargs. Это как бесконечный карман у фокусника.
python def покажи_всё(*args, **kwargs):
print("Позиционные:", args)
print("Ключевые:", kwargs)
Можешь туда напихать чего угодно — она всё примет, всё разложит по полочкам. Как добрая бабка в деревне — всех накормит, никого не обидит.
🌀 Лямбда — маленькая, да удаленькая
Вот это, сынок, вообще чудо природы. Лямбда — это функция на одной строчке. Миниатюрная, как перстень, а пользы — вагон.
python сумма = lambda x, y: x + y
print(сумма(5, 7)) # 12
Писать удобно, читать — тоже, если глаза ещё видят мелкий шрифт. Главное — не перегибать. Всё хорошо в меру, и лямбды — не исключение. Не пихай их туда, где нужна полноценная функция — а то потом сам запутаешься.
🎯 Итог по-дедовски
Функции, друг мой, — это как инструменты в сарае. Всё на своём месте, всё под рукой. Хочешь — прибей, хочешь — прикрути, хочешь — посчитай. И пусть кто-то скажет, мол, сейчас уже ИИ за нас код пишет — а я скажу: плох тот программист, что на автоген надеется. Лучше самому понять, прочувствовать, потрогать каждую строчку, как ящичек с саморезами. 🧰
Так что, не ленись, учись писать функции с душой, по совести. И будет тебе счастье. А я пока пойду, чаю себе плесну... или не только чаю 😉🍷
До связи, старик-дед-программист 👴💻