Основы Python: Синтаксис, структуры данных и функции - Машинное обучение и ИИ: От Новичка до Собственных Проектов - Qpel.AI

Основы Python: Синтаксис, структуры данных и функции

Итак, вы сделали первый шаг в мир ИИ, осознав необходимость освоить Python. Отличный выбор! 🚀 Python — это не просто язык программирования, это экосистема, ставшая стандартом в машинном обучении и науке о данных. Его простота, читаемость и огромное количество библиотек делают его идеальным инструментом для ваших будущих ИИ-проектов.

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

Синтаксис Python: Простота и Читаемость

Python известен своим лаконичным и интуитивно понятным синтаксисом. Главное отличие от JavaScript, которое вы заметите сразу, — это использование отступов вместо фигурных скобок {} для определения блоков кода (функций, циклов, условных операторов).

# Это комментарий в Python, как // в JS
# Многострочные комментарии можно делать так:
"""
Это многострочный комментарий
или докстринг для функций/классов
"""

# Пример условного оператора
возраст = 30
if возраст >= 18:
    print("Совершеннолетний") # Отступ определяет блок кода
else:
    print("Несовершеннолетний")

# В JS это выглядело бы так:
// let возраст = 30;
// if (возраст >= 18) {
//     console.log("Совершеннолетний");
// } else {
//     console.log("Несовершеннолетний");
// }

Важно: Правильные отступы (обычно 4 пробела или 1 табуляция) критически важны в Python. Неправильный отступ приведет к ошибке IndentationError.

Переменные и Типы Данных

В Python, как и в JS, переменные создаются при первом присваивании значения. Вам не нужно объявлять их с ключевыми словами вроде var, let или const. Python автоматически определяет тип данных.

# Числа (целые и с плавающей точкой)
целое_число = 10       # int
дробное_число = 3.14   # float

# Строки (можно использовать одинарные или двойные кавычки)
имя = "Алиса"
приветствие = 'Привет, мир!'

# Булевы значения
активен = True
завершен = False

# Отсутствие значения (аналог null/undefined в JS)
пустота = None

# В JS:
// let целоеЧисло = 10;
// const имя = "Алиса";
// let пустота = null; // или undefined

Основные Структуры Данных

Python предлагает несколько встроенных структур данных, которые вы будете активно использовать.

Списки (List)

Списки — это упорядоченные, изменяемые коллекции элементов. Очень похожи на массивы в JavaScript.

# Создание списка
числа = [1, 2, 3, 4, 5]
смешанный_список = ["яблоко", 123, True]

# Доступ к элементам (индексация с 0)
первый_элемент = числа[0] # 1
последний_элемент = числа[-1] # 5 (удобно!)

# Изменение элемента
числа[0] = 10
print(числа) # [10, 2, 3, 4, 5]

# Добавление элементов
числа.append(6) # Добавить в конец
числа.insert(1, 1.5) # Вставить по индексу
print(числа) # [10, 1.5, 2, 3, 4, 5, 6]

# Удаление элементов
числа.remove(1.5) # Удалить по значению
удаленный_элемент = числа.pop() # Удалить последний и вернуть его
print(числа) # [10, 2, 3, 4, 5]

Кортежи (Tuple)

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

координаты = (10, 20)
цвета = ("красный", "зеленый", "синий")

# Доступ к элементам такой же, как у списков
x = координаты[0] # 10

# Попытка изменить вызовет ошибку!
# координаты[0] = 5 # TypeError: 'tuple' object does not support item assignment

Множества (Set)

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

уникальные_числа = {1, 2, 3, 3, 4, 5, 5}
print(уникальные_числа) # {1, 2, 3, 4, 5} - дубликаты удалены

# Добавление элемента
уникальные_числа.add(6)

# Проверка наличия
есть_ли_3 = 3 in уникальные_числа # True

Словари (Dictionary)

Словари — это неупорядоченные коллекции пар "ключ-значение". Аналогичны объектам в JavaScript или Map. Ключи должны быть уникальными и неизменяемыми (например, строки, числа, кортежи).

# Создание словаря
пользователь = {
    "имя": "Иван",
    "возраст": 30,
    "город": "Москва"
}

# Доступ к значениям по ключу
имя_пользователя = пользователь["имя"] # "Иван"
# Или с методом .get() для безопасного доступа (вернет None, если ключа нет)
город_пользователя = пользователь.get("город") # "Москва"
страна_пользователя = пользователь.get("страна", "Неизвестно") # "Неизвестно"

# Изменение значения
пользователь["возраст"] = 31

# Добавление новой пары
пользователь["профессия"] = "Разработчик ML"
print(пользователь)

# Перебор ключей и значений
for ключ, значение in пользователь.items():
    print(f"{ключ}: {значение}")

Управляющие Конструкции

Как и в любом языке программирования, в Python есть конструкции для управления потоком выполнения кода.

Условные операторы (if, elif, else)

температура = 25

if температура > 30:
    print("Очень жарко!")
elif температура > 20: # Сокращение от "else if"
    print("Тепло и комфортно.")
else:
    print("Прохладно.")

Циклы (for, while)

Цикл for в Python чаще всего используется для итерации по элементам коллекций.

# Цикл for по списку
фрукты = ["яблоко", "банан", "вишня"]
for фрукт in фрукты:
    print(f"Я люблю {фрукт}")

# Цикл for с диапазоном чисел (аналог for(let i=0; i<N; i++) в JS)
for i in range(5): # Генерирует числа от 0 до 4
    print(i) # 0, 1, 2, 3, 4

# Цикл while
счетчик = 0
while счетчик < 3:
    print(f"Счетчик: {счетчик}")
    счетчик += 1

Функции: Организация Кода

Функции позволяют группировать код в многократно используемые блоки.

# Определение функции
def поприветствовать(имя):
    """
    Эта функция приветствует пользователя по имени.
    Это докстринг - описание функции.
    """
    print(f"Привет, {имя}!")

# Вызов функции
поприветствовать("Алиса") # Привет, Алиса!

# Функция с возвращаемым значением
def сложить(a, b):
    return a + b

результат = сложить(5, 3)
print(результат) # 8

# Функции с аргументами по умолчанию
def отправить_сообщение(текст, получатель="Мир"):
    print(f"Сообщение для {получатель}: {текст}")

отправить_сообщение("Привет!") # Сообщение для Мир: Привет!
отправить_сообщение("Как дела?", "Боб") # Сообщение для Боб: Как дела?

# Лямбда-функции (анонимные функции, часто используются для простых операций)
умножить_на_два = lambda x: x * 2
print(умножить_на_два(7)) # 14

Совет: В Python нет аналога this из JavaScript. Методы классов (которые мы изучим позже) получают ссылку на сам объект через первый аргумент, обычно называемый self.

Задания для Самостоятельной Работы

Пришло время закрепить полученные знания на практике!

Упражнения

  1. Список покупок:
    • Создайте список список_покупок с несколькими продуктами.
    • Добавьте в него новый продукт.
    • Измените один из продуктов.
    • Удалите один продукт.
    • Выведите финальный список.
  2. Информация о книге:
    • Создайте словарь книга с ключами "название", "автор", "год_издания", "жанр". Заполните его данными.
    • Выведите название книги и автора.
    • Добавьте новый ключ "количество_страниц" и присвойте ему значение.
    • Проверьте, есть ли ключ "издательство" в словаре, и если нет, добавьте его со значением "Неизвестно".
  3. Проверка возраста:
    • Напишите функцию проверить_возраст, которая принимает один аргумент возраст.
    • Если возраст больше или равен 18, функция должна выводить "Доступ разрешен".
    • В противном случае — "Доступ запрещен".
    • Вызовите функцию с разными значениями возраста.
  4. Сумма чисел в списке:
    • Напишите функцию сумма_списка, которая принимает список чисел и возвращает их сумму.
    • Используйте цикл for для итерации по списку.
    • Протестируйте функцию на списке [10, 20, 30].

Вопросы для Самопроверки

  1. В чем ключевое отличие синтаксиса Python от JavaScript в плане определения блоков кода?
  2. Какое ключевое слово используется для определения функции в Python?
  3. Чем list отличается от tuple в Python? Когда лучше использовать каждый из них?
  4. Как в Python получить значение из словаря, если вы не уверены, что ключ существует, и хотите избежать ошибки?
  5. Для чего используются range() в цикле for?

Ключевые Выводы и Следующие Шаги

Что мы узнали:

  • Python использует отступы для определения блоков кода.
  • Переменные создаются при присваивании, типы данных определяются автоматически.
  • Мы познакомились с основными типами данных: int, float, str, bool, None.
  • Изучили ключевые структуры данных: списки (изменяемые, упорядоченные), кортежи (неизменяемые, упорядоченные), множества (неупорядоченные, уникальные) и словари (ключ-значение).
  • Рассмотрели управляющие конструкции: if/elif/else и циклы for/while.
  • Научились определять и вызывать функции, а также использовать аргументы по умолчанию и лямбда-функции.

Дальнейшее развитие и связь с курсом:

Эти базовые знания Python — ваш первый и самый важный шаг на пути к созданию собственных ИИ-проектов. Все библиотеки для машинного обучения, с которыми мы будем работать (NumPy, Pandas, Scikit-learn, TensorFlow, PyTorch), написаны на Python и используют именно эти конструкции. Понимание основ позволит вам уверенно читать и писать код, необходимый для работы с данными и построения моделей.

Теперь, когда вы освоили базовый синтаксис и структуры данных Python, пришло время узнать, как запускать этот код и эффективно работать с ним. На следующей странице мы настроим вашу среду разработки, познакомимся с Jupyter Notebooks и Google Colab — инструментами, которые станут вашими верными помощниками в мире машинного обучения.