Основы языка программирования Python: синтаксис и базовые конструкции

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

1. Введение в Python: установка окружения, переменные и функции ввода-вывода

Введение в Python: установка окружения, переменные и функции ввода-вывода

Добро пожаловать в курс «Основы языка программирования Python». Это первая статья, с которой начнется ваше погружение в мир разработки. Python — это мощный, гибкий и, что самое главное, дружелюбный к новичкам язык программирования. Он используется везде: от создания веб-сайтов и искусственного интеллекта до анализа данных и автоматизации рутинных задач.

В этой статье мы разберем фундамент: как подготовить компьютер к работе, что такое переменные, как программы «общаются» с пользователем и как написать свой первый код.

Почему именно Python?

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

!Схематичное изображение того, как интерпретатор преобразует исходный код в действия программы

Основные преимущества: * Читаемость: синтаксис Python лаконичен и понятен. * Богатая стандартная библиотека: «батарейки в комплекте» — так говорят о Python, потому что многие инструменты уже встроены в язык. * Кроссплатформенность: ваш код будет работать и на Windows, и на macOS, и на Linux.

Установка окружения

Прежде чем писать код, нам нужно установить инструменты. Нам понадобятся две вещи: сам интерпретатор Python и среда разработки (редактор кода).

Шаг 1: Установка интерпретатора

  • Перейдите на официальный сайт python.org.
  • В разделе Downloads скачайте последнюю версию для вашей операционной системы (например, Python 3.x).
  • ВАЖНО: При установке на Windows обязательно поставьте галочку напротив пункта Add Python to PATH. Это позволит запускать Python из командной строки.
  • Шаг 2: Выбор среды разработки (IDE)

    Писать код можно хоть в «Блокноте», но это неудобно. Специальные редакторы подсвечивают синтаксис, подсказывают ошибки и помогают запускать программы. Для начала обучения мы рекомендуем:

    * VS Code (Visual Studio Code): легкий, мощный и самый популярный редактор в мире. * PyCharm Community Edition: профессиональная среда разработки, созданная специально для Python. * IDLE: простая среда, которая устанавливается вместе с Python (подойдет для самых первых шагов).

    Первая программа: Hello, World!

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

    Откройте ваш редактор кода, создайте файл с названием hello.py (расширение .py обязательно) и напишите следующую строку:

    Запустите программу. В консоли вы увидите: Hello, World!

    Разберем, что произошло:

  • print — это имя функции (команды), которая говорит компьютеру: «Напечатай то, что внутри скобок».
  • Скобки () — обязательный элемент вызова функции.
  • Кавычки " " — показывают, что мы передаем текст (строку), а не команду или число.
  • Переменные: хранение данных

    Программы редко просто выводят текст. Обычно они обрабатывают данные. Чтобы сохранить данные в памяти компьютера для дальнейшего использования, нужны переменные.

    Представьте переменную как коробку, на которую вы наклеили этикетку с именем. В эту коробку вы можете положить какое-то значение.

    !Метафора переменных как коробок с именами, хранящих значения

    Создание переменной

    В Python создание переменной происходит в момент присваивания ей значения. Для этого используется оператор присваивания =.

    Здесь мы создали две переменные: * В переменную name мы положили строку "Алексей". * В переменную age мы положили число 25.

    Правила именования переменных

    Чтобы ваш код был понятен и работал корректно, следуйте правилам:

  • Имя переменной может содержать буквы (a-z, A-Z), цифры (0-9) и знак подчеркивания _.
  • Имя не может начинаться с цифры.
  • Имя не должно содержать пробелов.
  • Python чувствителен к регистру: score, Score и SCORE — это три разные переменные.
  • В Python принято использовать стиль snake_case (змеиный регистр): слова пишутся маленькими буквами и разделяются подчеркиванием.

    Правильно:* user_name, total_score, my_variable * ~~Неправильно:~~ User Name, 2nd_player, class (зарезервированные слова использовать нельзя)

    Базовые типы данных

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

    Рассмотрим основные типы:

    1. Целые числа (int)

    Используются для счета предметов, индексов, количества.

    2. Вещественные числа (float)

    Числа с плавающей точкой (дробные). В программировании для разделения целой и дробной части используется точка, а не запятая.

    3. Строки (str)

    Текстовая информация. Строки всегда заключаются в кавычки (одинарные ' или двойные ").

    4. Логический тип (bool)

    Имеет всего два значения: Истина (True) и Ложь (False). Используется для проверки условий.

    Чтобы узнать тип переменной, можно использовать функцию type():

    Ввод данных: общение с пользователем

    Мы уже умеем выводить данные с помощью print(). Теперь научимся получать их от пользователя. для этого существует функция input().

    Можно сделать код короче, передав текст-подсказку прямо в input():

    Важная особенность input()

    Функция input() всегда возвращает строку (str). Даже если пользователь введет цифры, для программы это будет просто текст.

    Пример проблемы:

    Результатом будет не 15, а 510. Почему? Потому что мы сложили две строки: "5" + "10" склеились в "510".

    Преобразование типов

    Чтобы работать с введенными данными как с числами, их нужно преобразовать. Для этого используются функции int() (в целое) и float() (в дробное).

    Исправленный пример:

    Практический пример: Калькулятор индекса массы тела (ИМТ)

    Давайте объединим все знания и напишем программу, которая рассчитывает индекс массы тела. Это отличный пример использования переменных, ввода-вывода и простой математики.

    Формула расчета ИМТ выглядит так:

    где — индекс массы тела, — масса тела в килограммах, — рост в метрах.

    Напишем код:

    Если вы введете вес 70 и рост 1.75, программа подставит значения в формулу и выдаст результат.

    Комментарии в коде

    В примере выше вы могли заметить строки, начинающиеся с символа #. Это комментарии. Python игнорирует всё, что написано после # в той же строке. Комментарии нужны программистам, чтобы пояснять сложные участки кода или оставлять заметки для себя и коллег.

    Заключение

    Поздравляем! Вы сделали первый шаг в изучении Python. Сегодня мы:

  • Установили Python и выбрали редактор кода.
  • Написали первую программу.
  • Узнали, что переменные — это именованные хранилища данных.
  • Познакомились с типами данных: int, float, str, bool.
  • Научились вводить и выводить информацию.
  • В следующей статье мы углубимся в математические операции и научимся управлять потоком выполнения программы с помощью условных конструкций.

    2. Базовые типы данных и операторы: числа, строки и логические значения

    Базовые типы данных и операторы: числа, строки и логические значения

    В предыдущей статье мы установили окружение, написали первую программу «Hello, World!» и познакомились с концепцией переменных как «коробок» для хранения данных. Однако, как вы могли заметить, данные бывают разными: имена — это текст, возраст — это число, а состояние «включено/выключено» — это логический переключатель.

    Сегодня мы подробно разберем три кита, на которых держится обработка информации в Python: числа, строки и логические значения. Мы научимся производить математические вычисления, склеивать текст и сравнивать величины.

    Числа: математика и арифметика

    В Python работа с числами интуитивно понятна, но имеет свои нюансы. Как мы уже упоминали, существуют два основных типа чисел:

  • Целые числа (int): 1, 10, -5, 1000000.
  • Числа с плавающей точкой (float): 1.5, 3.14, -0.001.
  • Арифметические операторы

    Python поддерживает все стандартные математические операции. Рассмотрим их в таблице:

    | Операция | Символ | Пример кода | Результат | | :--- | :---: | :--- | :--- | | Сложение | + | 10 + 5 | 15 | | Вычитание | - | 10 - 5 | 5 | | Умножение | | 10 5 | 50 | | Деление | / | 10 / 2 | 5.0 | | Целочисленное деление | // | 10 // 3 | 3 | | Остаток от деления | % | 10 % 3 | 1 | | Возведение в степень | | 2 3 | 8 |

    Обратите внимание на деление. Обычное деление / всегда возвращает тип float, даже если число делится нацело.

    Деление с остаток и целочисленное деление

    Эти две операции часто вызывают вопросы у новичков, но они крайне полезны. Например, чтобы узнать, является ли число четным, мы проверяем остаток от деления на 2.

    Математически это можно записать так:

    Где — делимое, — делитель, — частное (результат //), а — остаток (результат %).

    !Визуализация работы операторов // и % на примере деления 13 на 4

    Пример в коде:

    Порядок действий

    Python соблюдает стандартный математический порядок операций (приоритет):

  • Скобки ()
  • Возведение в степень **
  • Умножение *, деление /, //, % (слева направо)
  • Сложение + и вычитание - (слева направо)
  • Строки: работа с текстом

    Строки (str) в Python — это последовательности символов, заключенные в кавычки. Вы можете использовать как одинарные ', так и двойные " кавычки, главное — чтобы открывающая и закрывающая совпадали.

    Операции над строками

    С текстом нельзя проводить арифметические вычисления в привычном смысле, но некоторые операторы работают и здесь.

    1. Конкатенация (Склеивание) Знак + объединяет две строки в одну.

    2. Дублирование Знак * позволяет повторить строку указанное количество раз.

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

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

    * \n — перевод строки (Enter). * \t — табуляция (отступ). * \' или \" — кавычка внутри строки.

    F-строки: форматирование

    Начиная с версии Python 3.6, появился самый удобный способ вставки значений переменных внутрь строки — f-строки. Перед открывающей кавычкой ставится буква f, а переменные пишутся в фигурных скобках {}.

    Это делает код чище и избавляет от необходимости вручную преобразовывать числа в строки.

    Логические значения и операторы сравнения

    Тип данных bool назван в честь математика Джорджа Буля. Он может принимать только два значения: True (Истина) и False (Ложь). Эти значения являются результатом проверок и сравнений.

    Операторы сравнения

    Эти операторы сравнивают два значения и возвращают bool.

    | Оператор | Описание | Пример | Результат | | :---: | :--- | :--- | :--- | | == | Равно | 5 == 5 | True | | != | Не равно | 5 != 3 | True | | > | Больше | 10 > 20 | False | | < | Меньше | 10 < 20 | True | | >= | Больше или равно | 5 >= 5 | True | | <= | Меньше или равно | 4 <= 5 | True |

    Важно: Не путайте оператор присваивания = (положить значение в переменную) и оператор сравнения == (сравнить два значения).

    Логические операторы

    Часто нам нужно проверить несколько условий одновременно. Для этого используются операторы and, or и not.

    !Аналогия логических операторов с электрическими цепями

    1. and (И) Возвращает True, только если оба условия истинны.

    2. or (ИЛИ) Возвращает True, если хотя бы одно из условий истинно.

    3. not (НЕ) Инвертирует значение: True превращает в False и наоборот.

    Преобразование типов

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

    Для решения этой проблемы используются функции явного преобразования типов:

    * int() — преобразует в целое число (отбрасывает дробную часть, если она есть). * float() — преобразует в дробное число. * str() — преобразует в строку. * bool() — преобразует в логическое значение (0 и пустая строка станут False, остальное — True).

    Исправленный пример:

    Пример преобразования строки в число:

    Практический пример: Конвертер валют

    Давайте напишем программу, которая конвертирует рубли в доллары. Мы используем переменные, ввод данных, преобразование типов и арифметические операции.

    Формула конвертации проста:

    Где — сумма в долларах, — сумма в рублях, — текущий курс обмена.

    Если пользователь введет 5000, программа разделит 5000 на 92.5 и выведет аккуратный результат, например: У вас есть 54.05 долларов.

    Заключение

    В этой статье мы заложили прочный фундамент для дальнейшего программирования. Теперь вы умеете: * Различать целые и дробные числа, выполнять математические операции. * Работать со строками: склеивать их, дублировать и форматировать через f-строки. * Использовать логические значения и операторы сравнения для проверки условий. * Преобразовывать одни типы данных в другие.

    Эти знания понадобятся нам в следующей статье, где мы научимся управлять ходом программы: заставим код принимать решения с помощью условной конструкции if-else.

    3. Управление потоком выполнения: условные конструкции if-else и циклы

    Управление потоком выполнения: условные конструкции if-else и циклы

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

    В реальной жизни мы постоянно принимаем решения: «Если идет дождь, я возьму зонт, иначе пойду в кепке». Или выполняем повторяющиеся действия: «Пока не выучу урок, буду читать книгу».

    Сегодня мы научим программы думать и принимать решения. Мы разберем две фундаментальные концепции программирования: условные конструкции (ветвление) и циклы (повторение).

    Условные конструкции: if, elif, else

    Условные конструкции позволяют программе выбирать, какой блок кода выполнить, в зависимости от истинности определенного условия. В Python для этого используются ключевые слова if (если), elif (сокращение от else if — иначе если) и else (иначе).

    !Блок-схема, показывающая принцип работы условного ветвления

    Синтаксис и отступы

    Python отличается от многих других языков (C++, Java, JavaScript) тем, что отступы (пробелы в начале строки) в нем являются обязательной частью синтаксиса. Они определяют вложенность блоков кода.

    Стандартный отступ в Python — 4 пробела.

    Конструкция if

    Самая простая проверка состоит только из блока if. Если условие истинно (True), код внутри блока выполняется. Если ложно (False) — пропускается.

    В этом примере, так как переменная age равна 20, условие age >= 18 истинно. Программа выведет приветствие. Если бы age было равно 15, строки с отступом были бы проигнорированы.

    Конструкция if-else

    Часто нам нужно предусмотреть альтернативное действие, если условие не выполнилось. Для этого используется else.

    Конструкция if-elif-else

    Если вариантов больше двух, мы используем elif. Проверка идет сверху вниз. Как только находится первое истинное условие, выполняется его блок, и программа выходит из всей конструкции.

    Здесь score равно 85.

  • Проверяется score >= 90 (85 >= 90) — Ложь.
  • Проверяется score >= 75 (85 >= 75) — Истина. Выполняется print("Оценка: B").
  • Остальные проверки (elif score >= 60 и else) игнорируются.
  • Вложенные условия

    Внутри одного блока if может находиться другой блок if. Это называется вложенностью.

    Циклы: повторение действий

    Циклы позволяют выполнять один и тот же блок кода многократно. Это спасает программистов от дублирования кода и позволяет работать с большими объемами данных. В Python есть два основных типа циклов: while и for.

    Цикл while (Пока)

    Цикл while выполняет блок кода до тех пор, пока условие остается истинным. Это похоже на повторяющийся if.

    Математически это можно записать как выполнение действия , пока выполняется условие :

    Где — логическое условие, а — тело цикла.

    Пример: обратный отсчет.

    Важно: Если вы забудете изменить переменную внутри цикла (например, уберете count = count - 1), условие всегда будет истинным, и программа попадет в бесконечный цикл. В этом случае программу придется останавливать принудительно.

    Цикл for (Для)

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

    #### Перебор строки

    Строка — это последовательность символов. Мы можем перебрать её по буквам:

    На каждой итерации переменная letter будет принимать значение следующего символа: сначала 'P', затем 'y', и так далее.

    #### Функция range()

    Чаще всего цикл for используют с функцией range(), которая генерирует последовательность чисел. У неё есть три формы использования:

  • range(stop): от 0 до stop - 1.
  • range(start, stop): от start до stop - 1.
  • range(start, stop, step): от start до stop - 1 с шагом step.
  • Примеры:

    Обратите внимание: правая граница в range() никогда не включается в диапазон.

    Управление циклами: break и continue

    Иногда нам нужно вмешаться в стандартный ход выполнения цикла. Для этого существуют операторы break и continue.

    Оператор break

    break немедленно прерывает выполнение цикла и передает управление первой строке после него. Это полезно, если мы нашли то, что искали, и продолжать перебор нет смысла.

    Оператор continue

    continue пропускает оставшуюся часть текущей итерации и переходит к следующей. Это удобно для фильтрации данных.

    Вывод будет: r b t

    Практический пример: Игра «Угадай число»

    Давайте объединим знания о вводе данных, преобразовании типов, условиях и циклах, чтобы написать простую игру. Компьютер «загадывает» число, а пользователь пытается его угадать.

    Для генерации случайного числа нам понадобится модуль random. Мы изучим модули подробнее позже, но пока просто используем команду import.

    Разбор кода:

  • while True: создает бесконечный цикл, который будет работать, пока мы не вызовем break.
  • Мы считываем число пользователя и увеличиваем счетчик попыток.
  • С помощью if-elif-else мы сравниваем числа и даем подсказки.
  • Если число угадано, срабатывает break, и программа завершается.
  • Заключение

    Сегодня мы сделали огромный шаг вперед. Теперь ваши программы не просто выполняют набор инструкций, а умеют реагировать на данные и повторять действия.

    Мы изучили: * Условные конструкции if, elif, else. * Важность отступов в Python. * Циклы while для условий и for для последовательностей. * Функцию range() для генерации чисел. * Операторы break и continue для тонкой настройки циклов.

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

    4. Коллекции данных: работа со списками, кортежами, словарями и множествами

    Коллекции данных: работа со списками, кортежами, словарями и множествами

    В предыдущих статьях мы научились сохранять данные в переменные. Но что делать, если данных много? Представьте, что вам нужно сохранить список покупок, оценки всех учеников в классе или координаты точек на карте. Создавать для каждого значения отдельную переменную (item1, item2, item3...) — неудобно и неэффективно.

    Здесь на помощь приходят коллекции (или структуры данных). Это специальные контейнеры, которые позволяют хранить множество значений под одним именем. В Python существует четыре основных встроенных типа коллекций:

  • Списки (Lists)
  • Кортежи (Tuples)
  • Словари (Dictionaries)
  • Множества (Sets)
  • Сегодня мы разберем, чем они отличаются, как с ними работать и в каких ситуациях использовать каждый из них.

    Списки (Lists): изменяемые последовательности

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

    !Метафора списка как поезда с пронумерованными вагонами

    Создание списка

    Списки создаются с помощью квадратных скобок []. Элементы разделяются запятыми.

    Индексация: доступ к элементам

    Важно запомнить: нумерация в Python начинается с нуля. Первый элемент имеет индекс 0, второй — 1 и так далее.

    Python также поддерживает отрицательную индексацию. Индекс -1 обращается к последнему элементу, -2 — к предпоследнему.

    Срезы (Slicing)

    Мы можем получить часть списка, используя срезы. Формат: список[старт:стоп:шаг].

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

    Списки — это изменяемый тип данных. Мы можем добавлять, удалять и менять элементы.

    * append(item): добавляет элемент в конец. * insert(index, item): вставляет элемент на указанную позицию. * pop(index): удаляет элемент по индексу и возвращает его. * remove(item): удаляет первое вхождение значения.

    Кортежи (Tuples): неизменяемые списки

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

    Кортежи создаются с помощью круглых скобок ().

    Зачем нужны кортежи?

  • Защита данных: Если вы передаете в программу набор настроек, которые не должны меняться, используйте кортеж.
  • Скорость: Кортежи занимают меньше памяти и работают быстрее списков.
  • Ключи словарей: Кортежи могут быть ключами в словарях (об этом ниже), а списки — нет.
  • Распаковка кортежей

    Очень удобная фишка Python — возможность присвоить значения из кортежа сразу нескольким переменным.

    Словари (Dictionaries): пары ключ-значение

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

    Словари создаются с помощью фигурных скобок {}, где пары указываются через двоеточие ключ: значение.

    !Метафора словаря как хранилища по именованным ключам

    Работа со словарем

    Методы словарей

    * .keys(): возвращает список всех ключей. * .values(): возвращает список всех значений. * .items(): возвращает список пар (ключ, значение).

    Множества (Sets): уникальность и математика

    Множество — это неупорядоченная коллекция уникальных элементов. В множестве не может быть дубликатов.

    Множества также создаются фигурными скобками {}, но без двоеточий, или функцией set().

    Математические операции

    Множества в Python поддерживают классические операции из теории множеств: объединение, пересечение, разность.

    Рассмотрим формулу объединения двух множеств:

    Где и — это исходные множества, — знак объединения, — элемент, который попадает в результирующее множество, если он принадлежит () хотя бы одному из исходных множеств.

    В Python это делается так:

    !Визуализация операций над множествами

    Сводная таблица: что выбрать?

    | Тип | Синтаксис | Упорядочен? | Изменяем? | Дубликаты? | Для чего нужен | | :--- | :---: | :---: | :---: | :---: | :--- | | Список | [] | Да | Да | Да | Хранение последовательностей данных | | Кортеж | () | Да | Нет | Да | Хранение неизменяемых данных | | Словарь | {k:v} | Нет* | Да | Ключи — нет | Хранение структурированных данных | | Множество | {} | Нет | Да | Нет | Удаление дублей, мат. операции |

    Примечание: Начиная с Python 3.7, словари сохраняют порядок вставки элементов, но полагаться на это как на главный принцип работы не стоит.

    Практический пример: Анализ текста

    Давайте объединим знания. Допустим, у нас есть текст, и мы хотим посчитать количество уникальных слов и частоту их появления.

    Заключение

    Коллекции данных — это мощный инструмент, который превращает простые переменные в сложные структуры.

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

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

    5. Модульность кода: объявление функций, аргументы и импорт модулей

    Модульность кода: объявление функций, аргументы и импорт модулей

    Мы прошли долгий путь: от установки Python и переменных до сложных циклов и коллекций данных. Теперь ваши программы могут хранить информацию, принимать решения и повторять действия. Но по мере того как код становится сложнее, возникает новая проблема: он начинает напоминать «спагетти» — длинный, запутанный список инструкций, в котором трудно разобраться.

    Представьте, что вам нужно вычислить площадь круга в пяти разных местах программы. Копировать формулу пять раз? А если формула изменится? Вам придется искать и исправлять её везде. Это нарушает главный принцип программирования — DRY (Don't Repeat Yourself), или «Не повторяйся».

    Решение этой проблемы — функции и модули. Сегодня мы научимся разбивать код на логические блоки, переиспользовать их и подключать инструменты, написанные другими разработчиками.

    Что такое функция?

    Функция — это именованный блок кода, который выполняет определенную задачу. Вы уже пользовались встроенными функциями Python: print(), input(), len(), type(). Теперь пришло время создавать свои собственные.

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

    !Метафора работы функции: входные данные преобразуются в результат

    Объявление функции

    В Python создание функции начинается с ключевого слова def (от английского define — определить). За ним следует имя функции, круглые скобки и двоеточие.

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

    Аргументы и параметры

    Функция say_hello из примера выше всегда делает одно и то же. Чтобы функция стала гибкой, ей нужны входные данные. Переменные, которые мы указываем при создании функции, называются параметрами. Реальные значения, которые мы передаем при вызове, называются аргументами.

    Позиционные и именованные аргументы

    Когда параметров несколько, важен порядок их передачи.

    Если перепутать местами, получится ерунда: «У меня есть Гарри по кличке хомяк». Чтобы этого избежать, можно использовать именованные аргументы:

    Значения по умолчанию

    Вы можете сделать некоторые параметры необязательными, задав им значение по умолчанию.

    Возврат значения: return

    До сих пор наши функции просто печатали текст на экран. Но в реальном программировании функции чаще должны возвращать результат, чтобы программа могла использовать его дальше (например, сохранить в переменную или использовать в математической формуле).

    Для этого используется оператор return.

    Рассмотрим пример с вычислением площади круга. Математическая формула выглядит так:

    Где — площадь круга, — математическая константа (примерно 3.14159), а — радиус круга.

    Важное отличие print от return: * print — это как крикнуть ответ в окно. Все услышали, но записать и использовать это в вычислениях программа не может. * return — это как передать записку с ответом лично в руки. Программа берет это значение и работает с ним дальше.

    Если функция не имеет return, она неявно возвращает специальное значение None (ничего).

    Область видимости переменных (Scope)

    Одна из самых частых ошибок новичков связана с пониманием того, где живут переменные. В Python существует понятие области видимости.

  • Локальные переменные: Переменные, созданные внутри функции, видны только внутри этой функции. Снаружи их не существует.
  • Глобальные переменные: Переменные, созданные в основном коде (вне функций), видны везде.
  • Представьте, что функция — это дом с тонированными стеклами. Изнутри дома (функции) видно, что происходит на улице (глобальные переменные). Но с улицы невозможно увидеть, что происходит внутри дома (локальные переменные).

    Модули: использование чужого кода

    Python называют языком с «батарейками в комплекте» (batteries included). Это значит, что вместе с языком устанавливается огромная библиотека готовых решений для самых разных задач: от математики до работы с интернетом.

    Эти решения упакованы в модули. Модуль — это просто файл с расширением .py, который содержит функции и переменные.

    Чтобы использовать модуль, его нужно импортировать с помощью команды import.

    Модуль math

    Вернемся к нашему примеру с кругом. Вместо того чтобы вручную задавать число Пи, лучше взять его из модуля math.

    Модуль random

    В прошлой статье мы уже использовали его для генерации чисел. Давайте вспомним:

    Способы импорта

  • Импорт всего модуля:
  • Импорт конкретной функции (чтобы не писать название модуля):
  • Импорт с псевдонимом (сокращение имени):
  • Практика: Рефакторинг кода

    Рефакторинг — это улучшение структуры кода без изменения его поведения. Давайте возьмем задачу конвертации валют из второй статьи и перепишем её с использованием функций.

    Было (линейный код):

    Стало (модульный код):

    Кажется, что кода стало больше. Зачем это нужно?

  • Тестируемость: Мы можем проверить работу функции convert_rub_to_usd отдельно, не вводя данные с клавиатуры.
  • Переиспользование: Если нам понадобится конвертировать валюту в другой части программы, мы просто вызовем функцию.
  • Читаемость: Основная логика (внизу) читается как оглавление книги.
  • Заключение

    Сегодня вы перешли на новый уровень программирования. Вы больше не просто пишете скрипты, которые выполняются сверху вниз. Вы создаете архитектуру приложения.

    Мы изучили: * Как создавать функции с помощью def. * Разницу между параметрами и аргументами. * Зачем нужен return и чем он отличается от print. * Как работают локальные и глобальные переменные. * Как подключать мощные модули math и random.

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