Типизация в Python с использованием модуля typing
В Python модуль typing предоставляет возможность добавлять подсказки типов для переменных, функций и классов, что делает код более явным и понятным.
Зачем использовать типизацию?
1. Ясность и понятность кода: Добавление аннотаций типов помогает читателям быстро понять, какие данные ожидаются и какие типы переменных возвращаются из функций.
2. Предотвращение ошибок: Статические анализаторы кода, такие как mypy, могут обнаруживать потенциальные ошибки до выполнения программы, что уменьшает количество багов.
3. Документация кода: Подсказки типов могут служить формой документации, особенно полезной при совместной разработке. Разработчики могут быстро понимать интерфейсы функций и классов.
Пример использования типизации для переменных и функций:
from typing import List, Tuple
def multiply(a: int, b: int) -> int:
return a * b
def process_list(data: List[int]) -> Tuple[int, int]:
sum_values = sum(data)
average = sum_values / len(data)
return sum_values, average
# Пример использования
result1 = multiply(5, 3)# Ожидается int
data_list = [1, 2, 3, 4, 5]
result2 = process_list(data_list)# Ожидается Tuple[int, int]
Здесь a: int и b: int указывают на типы аргументов функции, а -> int и -> Tuple[int, int] - на типы возвращаемых значений. Это помогает читателям кода лучше понимать ожидаемую структуру данных и типы переменных.
Типизация делает ваш код более структурированным, улучшает его читабельность и может служить документацией, облегчая разработку.
#python#typing
#Python#dataScience
🐍
Data Science A-Z™: Hands-On Exercises & Bonus
Learn Data Science step by step through real Analytics examples. Data Mining, Modeling, Tableau Visualization and more!
🔗Link
-----
Main channel: @repo_science
Coupons: @freecoupons_reposcience
-----
🌟PyRoki: Библиотека кинематики роботов на Python.
PyRoki (Python Robot Kinematics) - это модульный, расширяемый и кроссплатформенный инструментарий, заточенный под задачи кинематической оптимизации и реализованный полностью на Python.
Фишка библиотеки - в предоставлении дифференцируемой модели прямой кинематики робота, которая строится на основе URDF-файлов, тем самым избавляя инженера от необходимости вручную прописывать кинематические цепи: система не только парсит описание робота, но и автоматически генерирует примитивы коллизий.
С точки зрения математического аппарата, PyRoki интегрируется с решателем Levenberg-Marquardt (через jaxls). Это дает возможность проводить оптимизацию на многообразиях, а также обрабатывать жесткие ограничения с помощью решателя на основе модифицированной функции Лагранжа.
Библиотека предлагает готовые реализации cost-функций: поза рабочего органа, коллизии с самим собой или объектами мира и метрики манипулируемости.
Если стандартного набора недостаточно, архитектура позволяет задавать свои функции затрат, используя как автоматическое дифференцирование, так и аналитические якобианы.
Благодаря базе JAX, библиотека кроссплатформенна: ее работа возможна на CPU, GPU и TPU.
🟡При внедрении PyRoki в пайплайн важно учитывать специфику JIT-компиляции в JAX.
Компиляция триггерится при первом запуске, а также каждый раз, когда меняются формы входных данных: например, количество целей или препятствий.
Чтобы избежать расходов на перекомпиляцию, рекомендуется использовать предварительный паддинг массивов, что позволяет векторизовать вычисления для входов с различными шейпами.
Также стоит учитывать, что в библиотеке отсутствуют планировщики, основанные на сэмплировании (графы, деревья), поэтому задачи глобального планирования пути придется решать внешними средствами.
🟡Типы поддерживаемых соединений и геометрия ограничены.
На данный момент PyRoki работает исключительно с кинематическими деревьями; замкнутые механизмы или параллельные манипуляторы не поддерживаются.
Список доступных типов джоинтов ограничен 4 позициями: вращательные, непрерывные, призматические и фиксированные. Любые другие типы соединений, встреченные в URDF, будут автоматически интерпретироваться системой как фиксированные.
Для геометрии коллизий набор примитивов также фиксирован: поддерживаются сферы, капсулы, полупространства и карты высот.
Если ваша модель использует сложные меши, коллизии для них будут аппроксимироваться капсулами.
В вопросах производительности, особенно в сценариях с интенсивными проверками коллизий, PyRoki, вероятно, уступает CuRobo, хотя, как говорится в документации - сравнительные тесты скорости и точности авторами пока не проводились.
📌Лицензирование: MIT License.
🟡Страница проекта
🟡Arxiv
🟡Документация
🖥GitHub
@ai_machinelearning_big_data
#AI#ML#Robotics#Pyroki#Python
#hacking#python
🐍
Python Hacking | Real Ethical Hacking with Python | PYCEH23+
Description:
This immersive and comprehensive course is designed to equip you with the knowledge and hands-on skills necessary to excel in the exciting world of ethical hacking.
With a focus on practical applications, this course covers everything you need to know about Python programming, making it accessible to both beginners and experienced programmers. You’ll embark on an exciting journey where you’ll learn how to harness the power of Python to manipulate MAC addresses, develop network scanners, execute Man-in-the-Middle attacks, intercept network traffic, create your own pentesting RAT (Remote Access Trojan) malware, and much more.
🌐En
🔗Link
-----
Main channel:@repo_science
Coupons:@freecoupons_reposcience
-----