Добавить в корзинуПозвонить
Найти в Дзене

Основы Python для начинающих, часть 2: погружение в детали

Всем привет! Я — практикующий исследователь данных, и на этом канале делюсь тем, что реально работает в IT. Никакой сухой теории, только личный опыт, рабочие инструменты и грабли, на которые я уже наступил за вас. Рад, что вы здесь! В первой части мы разобрали самые азы Python: переменные, циклы, функции и базовые коллекции. Это был наш «алфавит». Если вы чувствуете себя с этими темами уверенно, пора двигаться дальше и учиться складывать из букв осмысленные слова и предложения. Эта статья — логичное продолжение, моя шпаргалка для тех, кто освоил базу и спрашивает себя: «А что дальше?» Здесь мы копнем чуть глубже в те инструменты, которые делают Python таким гибким и мощным. Помните, как мы создавали списки с помощью циклов for? Например, чтобы получить список квадратов чисел от 0 до 9: squares = []
for i in range(10):
squares.append(i * i)
# squares -> [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] Работает? Да. Элегантно? Не очень. В Python есть более короткий и, как говорят, «пайтоничный»
Оглавление

Всем привет! Я — практикующий исследователь данных, и на этом канале делюсь тем, что реально работает в IT. Никакой сухой теории, только личный опыт, рабочие инструменты и грабли, на которые я уже наступил за вас. Рад, что вы здесь!

В первой части мы разобрали самые азы Python: переменные, циклы, функции и базовые коллекции. Это был наш «алфавит». Если вы чувствуете себя с этими темами уверенно, пора двигаться дальше и учиться складывать из букв осмысленные слова и предложения. Эта статья — логичное продолжение, моя шпаргалка для тех, кто освоил базу и спрашивает себя: «А что дальше?»

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

Каляки-баляки от Шедеврума
Каляки-баляки от Шедеврума

1. Списковые включения (List Comprehensions): магия в одну строку

Помните, как мы создавали списки с помощью циклов for? Например, чтобы получить список квадратов чисел от 0 до 9:

squares = []
for i in range(10):
squares.append(i * i)
# squares -> [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

Работает? Да. Элегантно? Не очень. В Python есть более короткий и, как говорят, «пайтоничный» способ сделать то же самое.

Знакомьтесь, списковые включения:

squares = [i * i for i in range(10)]
# Результат тот же самый!

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

# Только квадраты четных чисел
even_squares = [i * i for i in range(10) if i % 2 == 0]
# even_squares -> [0, 4, 16, 36, 64]

Сначала может показаться непривычным, но как только вы начнете их использовать, пути назад уже не будет. Аналогичные конструкции есть для словарей ({k: v for ...}) и множеств ({x for ...}).

2. Функции: прокачиваем наши «привычки»

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

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

Часто мы передаем аргументы в функцию по порядку. Но можно и по имени, и это спасает от путаницы.

def describe_pet(animal_type, pet_name):
print(f"У меня есть {animal_type}.")
print(f"Его зовут {pet_name.title()}.")

# Позиционные аргументы (порядок важен)
describe_pet("хомяк", "хома")

# Именованные аргументы (порядок не важен)
describe_pet(pet_name="рекс", animal_type="собака")

*args и **kwargs: принимаем любое количество аргументов

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

  • *args собирает все позиционные аргументы в кортеж (tuple).
  • **kwargs собирает все именованные аргументы в словарь (dict).
def make_pizza(size, *toppings):
print(f"\nГотовим пиццу размером {size} см с такими топпингами:")
for topping in toppings:
print(f"- {topping}")

make_pizza(30, "пепперони")
make_pizza(40, "грибы", "зеленый перец", "моцарелла")

def build_profile(first, last, **user_info):
user_info['first_name'] = first
user_info['last_name'] = last
return user_info

user_profile = build_profile('альберт', 'эйнштейн',
location='принстон',
field='физика')
# user_profile -> {'location': 'принстон', 'field': 'физика', 'first_name': 'альберт', 'last_name': 'эйнштейн'}

Это не магия, а просто синтаксический сахар, который делает код невероятно гибким.

3. Модули и свои файлы: наводим порядок

Когда код разрастается, держать все в одном файле становится неудобно. Python позволяет легко разделять код на логические части — модули.

Представьте, что у нас есть файл utils.py с полезными функциями:

# utils.py
def say_hello(name):
return f"Привет, {name}!"

def say_bye(name):
return f"Пока, {name}!"

Теперь в нашем основном файле main.py мы можем их использовать:

# main.py
import utils

print(utils.say_hello("Анна"))
# Выведет: Привет, Анна!

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

4. Виртуальные окружения (venv): личная гигиена программиста

А вот это, пожалуй, самая важная тема, которую новички часто пропускают. И зря.

Проблема: У вас есть проект A, который требует библиотеку pandas версии 1.5. А для проекта B нужна версия 2.0. Если вы установите их глобально, что-то обязательно сломается.

Решение: Виртуальное окружение. Это изолированная папка со своей версией Python и своим набором библиотек. Для каждого проекта — свое окружение.

Создать его проще простого (делается один раз для проекта):

# 1. Создаем папку для окружения (например, 'venv')
python -m venv venv

# 2. Активируем его
# На Windows:
venv\Scripts\activate

# На MacOS/Linux:
source venv/bin/activate

После активации в вашей консоли появится префикс (venv). Теперь все библиотеки, которые вы устанавливаете через pip install ..., попадут только в это окружение и не будут мешать другим проектам. Это стандарт индустрии и признак хорошего тона.

Итоги второй части

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

  1. Списковые включения — пишем код короче и выразительнее.
  2. Продвинутые функции (*args, **kwargs) — создаем гибкие инструменты.
  3. Модули — организуем код и наводим порядок.
  4. Виртуальные окружения — работаем чисто и профессионально.

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

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

**первая часть статьи тут 👉 (ссылка)

Я не претендую на истину в последней инстанции, я пишу о своём пути и опыте. Спасибо, что дочитали до конца. Подпишитесь👇👇👇, ставьте лайки 👍🏽👍🏽👍🏽 — впереди много интересных статей про навыки, инструменты, обучение, лайфхаки и пути аналитика.