Программистика
Лучший канал по python Админ: @JeyRahol
Show more2 578
Subscribers
+6924 hours
+1897 days
+74030 days
- Subscribers
- Post coverage
- ER - engagement ratio
Data loading in progress...
Subscriber growth rate
Data loading in progress...
🖼️ Библиотека Python: PyO3
PyO3 — это мощная библиотека, которая позволяет разработчикам создавать расширения для Python на языке Rust, обеспечивая высокую производительность и безопасность типов, характерные для Rust. Это делает возможным писать критически важный по производительности код на Rust и легко интегрировать его в Python-проекты, сочетая лучшее из обоих миров: скорость и безопасность Rust с гибкостью и широкими возможностями Python.
Чтобы продемонстрировать работу PyO3, необходимо иметь установленный Rust и Cargo, а также Python. В этом примере мы создадим простую функцию на Rust, которая будет вызываться из Python. Эта функция будет принимать строку и возвращать ее длину.
⏺Установите PyO3, добавив его в зависимости в файле Cargo.toml вашего Rust проекта:
[package]
name = "pyo3_example"
version = "0.1.0"
edition = "2018"
[lib]
name = "pyo3_example"
crate-type = ["cdylib"]
[dependencies.pyo3]
version = "0.15.0"
features = ["extension-module"]
⏺В файле src/lib.rs создайте функцию на Rust, которая будет доступна из Python:
use pyo3::prelude::*;
use pyo3::wrap_pyfunction;
#[pyfunction]
fn string_length(s: String) -> PyResult<usize> {
Ok(s.len())
}
#[pymodule]
fn pyo3_example(_py: Python, m: &PyModule) -> PyResult<()> {
m.add_function(wrap_pyfunction!(string_length, m)?)?;
Ok(())
}
Этот код определяет функцию string_length
, которая принимает строку и возвращает ее длину. Декоратор #[pyfunction]
и функция wrap_pyfunction!
используются для регистрации этой функции в модуле Python.
⏺Соберите ваш Rust проект, используя Cargo:
cargo build --release
⏺После успешной сборки в директории target/release
появится файл с расширением .so
(для Linux и macOS) или .dll
(для Windows), который можно импортировать в Python. Например, если ваш проект называется pyo3_example
, имя файла будет libpyo3_example.so
или pyo3_example.dll
.
⏺Импортируйте и используйте ваш модуль в Python:
import sys
# Добавьте путь к скомпилированному файлу в список путей поиска
sys.path.append("path/to/your/target/release")
import pyo3_example
print(pyo3_example.string_length("Hello, Rust!"))
Этот Python скрипт импортирует модуль, созданный на Rust, и вызывает функцию string_length
, передавая ей строку. В результате будет выведена длина строки.
⛓ Ссылка на документацию
@programistica // #Library🔥 5❤ 1🤝 1
Photo unavailableShow in Telegram
❤️ Все платные курсы и книги выложили в Telegram
Крупнейшая база материалов по всем популярным языкам программирования теперь доступна бесплатно:
272 видео, 98 книг — JavaScript
352 видео, 87 книг — Python
145 видео, 71 книга — TypeScript
265 видео, 103 книги — Java
184 видео, 78 книг — C#
187 видео, 98 книг — C++
138 видео, 82 книги — PHP
112 видео, 61 книга — Shell
192 видео, 70 книг — Go
98 видео, 32 книги — Rust
202 видео, 94 книги — SQL
194 видео, 78 книг — Django
173 видео, 85 книг — Linux
155 видео, 44 книги — Flask
149 видео, 27 книг — QA
207 видео, 62 книги — Data Science
217 видео, 77 книг — Разработка ботов
164 видео, 96 книг — Разработка игр
🔒 Ежедневно куча материалов сливается в канал Easy Dev
👍 4❤ 2
Photo unavailableShow in Telegram
💻 Вопрос из собеседования: Что такое функция map в Python?
map() — это функция, которая принимает другую в качестве аргумента, а затем применяет её ко всем элементам итератора, передаваемым ей в качестве другого аргумента. Функция вернет объект map, поэтому нам нужно преобразовать его в объект списка.
def number_exponential(num):
return num**2
number_list = [2,3,4,5]
print(list(map(number_exponential, number_list)))
Надеюсь это поможет вам пройти собеседование на желаемую вами работу, удачи🔥🔥🔥@programistica // #jobs
🔥 7👍 2❤ 1
Photo unavailableShow in Telegram
👀 Книга: Программирование на Python для абсолютных новичков
⏺Знакомство с Python
⏺Основы
⏺Работа с данными
⏺Управление потоком
⏺Работа с файлами
⏺Что такое функции
⏺Импорт модулей
И многое другое
@programistica // #doc
👍 6❤ 1🔥 1
🖼️ Библиотека Python: FastAPI
FastAPI — это современный, быстрый веб-фреймворк для создания API с Python 3.6+ на основе стандартных типов Python, который позволяет легко создавать высокопроизводительные веб-приложения. Он автоматически генерирует интерактивную документацию API и поддерживает асинхронные запросы, что делает его идеальным выбором для построения сложных веб-сервисов и приложений.
⚙️ Пример использования
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"message": "Привет, мир FastAPI!"}
@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
В этом примере мы создаем экземпляр FastAPI и определяем два маршрута:
⏺read_root() обрабатывает GET-запросы к корневому пути ("/") и возвращает JSON с приветственным сообщением.
⏺read_item() обрабатывает GET-запросы к пути /items/{item_id}, принимая параметр item_id и опциональный запрос q. Этот маршрут возвращает JSON с item_id и q.
✔️ Установка
pip install fastapi uvicorn
⛓ Ссылка на документацию
@programistica // #Library❤ 3👍 2🔥 1
⚙️ Наследование в Python: Основы и Примеры
Наследование является одним из фундаментальных принципов объектно-ориентированного программирования (ООП). В Python наследование позволяет одному классу (дочернему классу) наследовать атрибуты и методы другого класса (родительского класса), обеспечивая тем самым повторное использование кода и упрощение его структуры.
Основы наследования
В Python класс может наследовать функциональность другого класса, причем не только одного, но и нескольких классов, что называется множественным наследованием. Родительский класс также известен как базовый класс или суперкласс, а класс, который наследует его свойства, называется производным классом или подклассом.
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
raise NotImplementedError("Subclass must implement abstract method")
class Dog(Animal):
def speak(self):
return f"{self.name} says Woof!"
class Cat(Animal):
def speak(self):
return f"{self.name} says Meow!"
В приведенном выше примере класс Animal является базовым классом с методом speak
, который предназначен для переопределения в подклассах. Классы Dog
и Cat
наследуют класс Animal
и реализуют свою версию метода speak
.
Переопределение методов
Подклассы могут переопределить методы базового класса. Это означает, что дочерний класс может иметь метод с таким же именем, как и в родительском классе, но с другой или дополненной функциональностью.
Функция super()
Функция super() в Python используется для вызова методов родительского класса из дочернего класса. Это особенно полезно в конструкторе __init__
, когда необходимо инициализировать атрибуты базового класса.
class Bird(Animal):
def __init__(self, name, can_fly):
super().__init__(name)
self.can_fly = can_fly
Множественное наследование
Python поддерживает множественное наследование, позволяя классу наследовать функциональность более чем одного класса.
class A:
def method(self):
print("A method")
class B:
def method(self):
print("B method")
class C(A, B):
pass
obj = C()
obj.method()
В случае множественного наследования Python следует порядку разрешения методов (MRO - Method Resolution Order), чтобы определить, какой метод вызывать. В приведенном примере будет вызван метод из класса A
, так как он указан первым в списке наследования класса C
.
Заключение
Наследование в Python предоставляет мощный инструмент для создания структурированного и легко поддерживаемого кода. Оно позволяет разработчикам расширять и модифицировать существующий код без его дублирования, что ведет к более чистой и эффективной реализации программ.
@programistica // #article👍 8❤ 3🔥 2
Photo unavailableShow in Telegram
💻 Вопрос из собеседования: Как перевернуть генератор?
Можно перевернуть генератор в Python, используя функцию
reversed()
. Вот пример, который демонстрирует это:
my_list = [1, 2, 3, 4, 5]
my_generator = (x**2 for x in my_list)
for item in reversed(list(my_generator)):
print(item)
В этом примере мы используем функцию reversed()
вместе с функцией list()
, чтобы создать обратный список элементов, сгенерированных генератором. Затем мы используем этот список с циклом for
для перебора элементов в обратном порядке. Если вы работаете с большими наборами данных, может быть полезно использовать обратное итерирование без использования list()
, чтобы избежать создания полной копии.
Вот пример, который демонстрирует это:
my_list = [1, 2, 3, 4, 5]
my_generator = (x**2 for x in my_list)
for item in reversed(tuple(my_generator)):
print(item)
Здесь мы используем функцию reversed() вместе с функцией tuple() для обратного итерирования через генератор без создания полной копии.|
Надеюсь это поможет вам пройти собеседование на желаемую вами работу, удачи🔥🔥🔥@programistica // #jobs
👍 9❤ 2🔥 2
Photo unavailableShow in Telegram
👀 Книга: введение в основные библиотеки и фреймворки Python
⏺DATA Science
⏺Machine Learning
⏺MLOPS
⏺Explanable AI
⏺TEXT Processing
⏺Image Processing
И многое другое
@programistica // #doc
👍 5❤ 2🔥 2