Всем привет! Я — практикующий исследователь данных, и на этом канале делюсь тем, что реально работает в 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 ..., попадут только в это окружение и не будут мешать другим проектам. Это стандарт индустрии и признак хорошего тона.
Итоги второй части
Если в первой части мы строили домик из кубиков, то сейчас мы научились делать его более крепким и функциональным:
- Списковые включения — пишем код короче и выразительнее.
- Продвинутые функции (*args, **kwargs) — создаем гибкие инструменты.
- Модули — организуем код и наводим порядок.
- Виртуальные окружения — работаем чисто и профессионально.
Освоив эти концепции, вы сделаете огромный шаг от написания простых скриптов к созданию полноценных приложений. Это тот фундамент, на котором уже можно уверенно строить что-то серьезное с помощью фреймворков и библиотек.
В следующей части, если тема вам зайдет, можем поговорить про работу с популярными библиотеками, такими как requests для работы с сетью или Pillow для изображений.
**первая часть статьи тут 👉 (ссылка)
Я не претендую на истину в последней инстанции, я пишу о своём пути и опыте. Спасибо, что дочитали до конца. Подпишитесь👇👇👇, ставьте лайки 👍🏽👍🏽👍🏽 — впереди много интересных статей про навыки, инструменты, обучение, лайфхаки и пути аналитика.