PyCode
22 subscribers
22 photos
43 links
Добро пожаловать на PyCode! Здесь мы вместе шаг за шагом изучаем основы языка программирования Python. От простых понятий до продвинутых тем, каждый урок будет наполнен понятными объяснениями, практическими примерами и, конечно же, юмором!
Download Telegram
👨‍💻3
Что выведет данный код?
Anonymous Quiz
71%
[19, 13, 5]
29%
[14, 8, 0]
0%
[19, 13, 0]
0%
[19, 12, 5]
👨‍💻3
👩‍💻Упрощай проверки с all()

💡Функция all() проверяет, что все элементы коллекции истинны. Это удобно для сокращения условий в коде.
Пример:
numbers = [2, 4, 6, 8]
if all([x % 2 == 0 for x in numbers]): # == сравнивает делится ли число без остатка на два
print("Все числа чётные!")

🚽Здесь all() проверяет, что все числа в списке делятся на 2. Это делает код чище и позволяет избежать вложенных циклов.
💻Используй all(), чтобы упростить условия!
#PyTips

🐍Питай код с PyCode
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻3
👩‍💻Основные принципы ООП: Инкапсуляция (2/3)

🏎Инкапсуляция — это ключевой принцип объектно-ориентированного программирования (ООП), который позволяет скрывать внутренние детали объекта и контролировать доступ к его данным. Она помогает защищать важную информацию и организовать чёткий интерфейс класса — набор публичных методов, через которые другие объекты могут взаимодействовать с классом.

😵‍💫Как работает инкапсуляция?
В Python инкапсуляция реализуется через сокрытие атрибутов:
Приватные атрибуты (например, __атрибут) скрыты и недоступны вне класса.
Защищённые атрибуты (например, _атрибут) доступны, но не предназначены для прямого использования за пределами класса.
Пример приватного атрибута:
class BankAccount:
def __init__(self, balance):
self.__balance = balance # Приватный атрибут

В этом примере атрибут __balance скрыт и доступен только через методы, защищающие от неправильных изменений. Мы создаём чёткий интерфейс для взаимодействия с данными объекта, и другие объекты могут работать только через определённые методы, не зная, как всё устроено внутри.

🤩Зачем нужна инкапсуляция?
Контроль доступа: Инкапсуляция защищает данные, гарантируя, что изменения в них происходят безопасно и через контролируемый интерфейс.
Упрощение интерфейса: Пользователь работает только с важными методами, не вникая в детали реализации.
Повышение надёжности кода: Защищённые данные и методы уменьшают вероятность ошибок, особенно при разработке сложных систем, где взаимодействие между объектами может быть сложным.

👍Инкапсуляция — важный инструмент для защиты данных, упрощения взаимодействия с объектами и улучшения надёжности кода. Используя её, вы создаёте безопасные интерфейсы, которые не позволяют внешнему коду напрямую вмешиваться в работу объекта.
#PyLearn #ООП

🐍Питай код с PyCode
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻3
👨‍💻3
👨‍💻3
👩‍💻Lambda-функции в Python

🤩Lambda-функции — это небольшие анонимные функции в Python, которые создаются с помощью ключевого слова lambda. Они особенно полезны, когда нужно написать короткую функцию на месте, без её явного объявления через def.

🥺Как работает lambda?
Lambda-функция состоит из:
Ключевого слова lambda
Аргументов функции
Выражения, которое будет выполнено и возвращено

Синтаксис:
lambda аргументы: выражение


Пример:
double = lambda x: x * 2
print(double(5)) # Выведет 10
Lambda-функция берёт один аргумент x и возвращает его удвоенное значение.


💡Применение: Lambda часто используется с такими функциями, как map(), filter() и sorted(), для кратких операций.

Пример с sorted():
pairs = [(1, 'one'), (2, 'two'), (3, 'three')]
pairs.sort(key=lambda pair: pair[1])
print(pairs) # [(1, 'one'), (3, 'three'), (2, 'two')]

✨Здесь lambda позволяет отсортировать список по второму элементу кортежа.

💻Когда использовать?
Lambda-функции идеально подходят для небольших одноразовых вычислений, когда объявлять полноценную функцию через def излишне.
#PyLearn

🐍Питай код с PyCode
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻3
👩‍💻Сокращаем код с помощью тернарного оператора

📖В Python есть удобный способ сокращать простые условные выражения — это тернарный оператор. Он позволяет писать условие в одну строку:
result = 'Even' if number % 2 == 0 else 'Odd'

🤩Здесь переменная result будет равна "Even", если число чётное, и "Odd", если нет. Это упрощает код и делает его более читабельным, когда требуется небольшое условие.
#PyTips

🐍Питай код с PyCode
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻3
👩‍💻Сортировка в Python: sort() и sorted()

💡В Python есть два основных способа сортировки списков: метод списка sort() и функция sorted(). Оба они используются для упорядочивания элементов, но работают по-разному.

💻sort(). Метод sort() сортирует список на месте, изменяя его порядок. Это метод изменяет сам объект списка и не возвращает новый список.
Синтаксис:
python 
list.sort(key=None, reverse=False)

key — необязательный параметр. Указывает функцию для сортировки элементов.
reverse — если True, сортировка выполняется в обратном порядке.
Пример:
python 
numbers = [5, 3, 4, 2, -1]
numbers.sort()
print(numbers) # [-1, 2, 3, 4, 5]


🚽sorted(). Функция sorted() не изменяет исходный список, а возвращает новый отсортированный список. Она работает с любыми итерируемыми объектами (списки, кортежи, строки и т.д.).
Синтаксис:
python 
sorted(iterable, key=None, reverse=False)

Пример:
 
python
numbers = [3, 1, 4, 2]
sorted_numbers = sorted(numbers)
print(sorted_numbers) # [1, 2, 3, 4]
print(numbers) # [3, 1, 4, 2] — исходный список не изменился


🥺Основные отличия:
sort() изменяет исходный список, sorted() создаёт новый.
sort() работает только со списками, sorted() — с любыми итерируемыми объектами.

🤩sort() и sorted() — мощные инструменты сортировки в Python, которые помогают эффективно организовать данные в ваших программах. Они гибкие благодаря параметрам key и reverse, что делает их идеальными для различных задач.
#PyLearn

🐍Питай код с PyCode
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻3
👨‍💻3
Что выведет данный код?
Anonymous Quiz
14%
5
29%
Ошибка операции
14%
True
43%
0
👨‍💻3
👩‍💻Основные принципы ООП: Полиморфизм (3/3)
  
😵‍💫Полиморфизм — это один из ключевых принципов ООП, который позволяет методам и объектам вести себя по-разному в зависимости от контекста. Это означает, что одна и та же операция может выполняться по-разному для объектов различных классов.

Виды полиморфизма:
🤩Переопределение методов (overriding): Позволяет дочернему классу изменять поведение метода родительского класса. Это даёт возможность каждому объекту реагировать на метод по-своему, хотя метод носит одно и то же имя.

Пример:
class Animal:
def speak(self):
return "Some sound"

class Dog(Animal):
def speak(self):
return "Bark"

class Cat(Animal):
def speak(self):
return "Meow"

В этом примере классы Dog и Cat переопределяют метод speak(), унаследованный от класса Animal. Хотя метод имеет одно и то же название, он возвращает разные результаты в зависимости от типа объекта.

💻Полиморфизм через интерфейсы и абстрактные классы: Объекты могут реализовывать одинаковые методы, даже если они принадлежат разным классам. Это позволяет работать с объектами по общему интерфейсу, не заботясь о конкретной реализации.
Пример:
class Shape:
def area(self):
pass

class Square(Shape):
def area(self):
return "Calculating area of square"

class Circle(Shape):
def area(self):
return "Calculating area of circle"

Здесь классы Square и Circle реализуют метод area(), но их поведение различается в зависимости от фигуры.

👍Зачем нужен полиморфизм?
Полиморфизм делает код более гибким и универсальным. Вы можете писать функции, которые работают с разными типами объектов, не зная их точных классов заранее. Это упрощает разработку и поддерживает принцип "написать код один раз, использовать везде".
#PyLearn #ООП

🐍Питай код с PyCode
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻3
👩‍💻for + else

🚽В Python можно использовать блок else вместе с циклом for. Этот блок выполняется, если цикл завершился без использования break.
Пример:
for i in range(3):
if i == 2:
break
else:
print("Цикл завершён без break")

# Ничего не выведется, т.к. сработал break

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

🐍Питай код с PyCode
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻3
👩‍💻Многопоточность в Python

🤩Многопоточность — это подход, при котором программа может выполнять несколько потоков (threads) одновременно. Это полезно для задач, которые можно выполнять параллельно, таких как ввод-вывод (сети, работа с файлами) и фоновая обработка.

Плюсы многопоточности
💡Повышение производительности при работе с I/O (сетевые запросы, файловые операции).
Параллелизм позволяет выполнять задачи в фоне, не блокируя основное выполнение программы.
Удобство использования стандартной библиотеки threading.
Пример:
import threading

def print_numbers():
for i in range(5):
print(i)

thread = threading.Thread(target=print_numbers)
thread.start()


Минусы многопоточности:
😭GIL (Global Interpreter Lock) — главный недостаток многопоточности в Python. Этот механизм блокирует выполнение более чем одного потока Python одновременно для выполнения операций с байт-кодом. GIL ограничивает многопоточность в Python, особенно при работе с процессорами.
❗️Сложности синхронизации: Многопоточные программы часто сталкиваются с проблемами синхронизации данных и состояния, что может привести к таким ошибкам, как состояния гонки и взаимные блокировки.

💻Многопоточность в Python полезна для ввода-вывода и задач, не связанных с интенсивными вычислениями. GIL ограничивает использование многопоточности для задач, связанных с процессором, и для таких задач лучше использовать многопроцессорность.
#PyLearn

🐍Питай код с PyCode
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻4
👩‍💻Преимущества и недостатки Python

Преимущества:
🤩Простота и читаемость
Python известен своим лаконичным и простым синтаксисом. Он ближе к естественному языку, что делает его доступным даже для новичков.
💪Большая стандартная библиотека
Python предоставляет мощную стандартную библиотеку, включающую инструменты для работы с файлами, операционными системами, сетями, протоколами, базами данных, веб-сервисами и многим другим. Это позволяет использовать Python практически в любой сфере разработки — от веб-программирования до машинного обучения.
💻Кроссплатформенность
Программы на Python можно легко запускать на различных операционных системах — Windows, macOS, Linux и др. Благодаря платформонезависимости его можно использовать для создания приложений, которые будут работать на любом устройстве без необходимости изменять код.

Недостатки:
📖Скорость выполнения
Python — интерпретируемый язык, и это делает его значительно медленнее языков вроде C++ или Java. Python не подходит для задач, требующих высокой производительности, таких как сложные вычисления или обработка больших данных в реальном времени.
😭Global Interpreter Lock (GIL)
Один из главных недостатков Python — это GIL (Global Interpreter Lock). GIL не позволяет одновременно выполнять несколько потоков, что снижает эффективность многопоточности в задачах, связанных с процессором (CPU-bound задачи). В задачах с I/O (сетевые операции, работа с файлами) это не так критично, но при вычислениях на нескольких ядрах CPU GIL становится узким местом.
😵Высокая потребность в памяти
Python использует динамическую типизацию, что упрощает написание кода, но увеличивает потребление памяти. Это может стать проблемой в системах с ограниченными ресурсами или при работе с большими данными.

💡Python — это универсальный и удобный инструмент для множества задач, особенно когда важны простота, скорость разработки и работа с большим количеством данных. Однако его недостатки, такие как GIL и сравнительно низкая производительность, делают его менее подходящим для задач, требующих высокой скорости и многопоточности.
#PyLearn

🐍Питай код с PyCode
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻3
👩‍💻Метод split() в Python

Метод split() используется для разделения строки на части на основе разделителя (по умолчанию — пробелы). Это удобный способ разбить строку на слова или части для дальнейшей обработки.
Пример:
text = "Python is awesome"
words = text.split()
print(words) # ['Python', 'is', 'awesome']


Вы можете указать собственный разделитель:
date = "2024-10-02"
parts = date.split("-")
print(parts) # ['2024', '10', '02']

#PyTips

🐍Питай код с PyCode
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻3
👨‍💻1
Что выведет данный код?
Anonymous Quiz
57%
[1, 2, 3]
29%
[2, 1]
0%
[1, 2]
14%
[3, 2, 1]
👨‍💻1
👩‍💻map() и filter() в Python

🤩Оба этих метода — мощные инструменты для обработки и трансформации коллекций в Python, упрощая работу с данными без необходимости использовать циклы.

✨Функция map() применяет заданную функцию ко всем элементам итерируемого объекта (например, списка), возвращая новый объект с результатами. Она полезна, когда нужно изменить или преобразовать все элементы последовательности.

numbers = [1, 2, 3, 4, 5]
squared = map(lambda x: x**2, numbers)
print(list(squared)) # оборачиваем в список потому что map возвращает объект

[1, 4, 9, 16, 25]

Здесь map() проходит по списку чисел и возводит каждое в квадрат.

📖Функция filter() используется для фильтрации элементов итерируемого объекта на основе условия, которое возвращает True или False. Она полезна для отбора элементов, удовлетворяющих определенным критериям.

numbers = [1, 2, 3, 4, 5]
even_numbers = filter(lambda x: x % 2 == 0, numbers)
print(list(even_numbers)) # filter тоже возвращает объект

[2, 4]

Здесь filter() вернул только четные числа.

🥺Когда использовать map() и filter()?
map() полезен, когда нужно применить одну и ту же операцию ко всем элементам списка, как в случае с трансформацией данных.
filter() хорош для ситуаций, когда необходимо отобрать элементы на основе условия

👍map() и filter() — мощные инструменты для работы с коллекциями, которые позволяют писать более краткий и функциональный код, особенно в сочетании с лямбда-функциями. Однако они могут быть менее читаемыми для сложных операций, поэтому важно соблюдать баланс между лаконичностью и читаемостью кода.
#PyLearn

🐍Питай код с PyCode
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻4
👩‍💻Использование sep и end в функции print()

☄️sep (separator) используется для указания разделителя между выводимыми значениями. По умолчанию это пробел.

print("Python", "is", "awesome", sep=" - ")
# Вывод: Python - is - awesome


🤩end задает символ, который выводится в конце строки. По умолчанию это новая строка (\n).

print("Hello", end="!")
# Вывод: Hello!


💡Эти параметры помогают гибко форматировать вывод.
#PyTips

🐍Питай код с PyCode
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻5