Python/ django
58.9K subscribers
2.07K photos
61 videos
47 files
2.79K links
по всем вопросам @haarrp

@itchannels_telegram - 🔥 все ит-каналы

@ai_machinelearning_big_data -ML

@ArtificialIntelligencedl -AI

@datascienceiot - 📚

@pythonlbooks

РКН: clck.ru/3FmxmM
加入频道
Python security best practices cheat sheet

Updated cheat sheet to make sure you keep your Python code secur

Список полезных советов про работу с внешними данными, сканированию кода, загрузке пакетов, сериализации данных, форматированию строк и другим мерам безопасности:

https://snyk.io/blog/python-security-best-practices-cheat-sheet/

@pythonl
📚9 must-have Python developer tools.

9 обязательных инструментов Python разработчика.

1. PyCharm IDE

2. Jupyter notebook

3. Keras

4. Pip Package

5. Python Anywhere

6. Scikit-Learn

7. Sphinx

8. Selenium

9. Sublime Text

@pythonl
🤖Errbot

Errbot is a chatbot. It allows you to start scripts interactively from your chatrooms for any reason: random humour, chatops, starting a build, monitoring commits, triggering alerts...

Errbot - это чат-бот, который можно подключить к чату, при этом бот будет вести осмысленный и интересный диалог.

🖥 Github

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 PyGitHub

If you want to manage your Github resources (repositories, user profiles, organizations, etc.) from Python scripts, try PyGithub. Above is an example to get a list of Github repositories when searching for a certain topic.

Если вы хотите управлять Github (репозиториями, профилями пользователей, организациями и т.д.) с помощью скриптов на Python, попробуйте PyGithub. Выше приведен пример получения списка репозиториев Github при поиске определенной темы.

$ pip install PyGithub

🖥 Github
📌 Документация

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 tmuxp

A session manager for tmux. Built on libtmux.

Менеджер сессий для tmux. Написан на базе libtmux.

🖥 Github

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
D-Tale: A Python Library to Visualize and Analyze your Data Without Code

The GIF above shows how your DataFrame will look like when using D-Tale. D-Tale is also useful for analyzing and visualizing your data without code.

D-Tale: Библиотека Python для визуализации и анализа данных без кода

В приведенном выше GIF показано, как будет выглядеть ваш DataFrame при использовании D-Tale. D-Tale также полезен для анализа и визуализации данных без кода.

D-Tale.

@pythonl
🖥 Difference between Numpy’s All and Any Methods

If you want to get the row whose ALL values satisfy a certain condition, use numpy’s all method. To get the row whose AT LEAST one value satisfies a certain condition, use numpy’s any method.

Если вы хотите получить строку, ВСЕ значения которой удовлетворяют определенному условию, используйте метод numpy's all. Чтобы получить строку, в которой хотя бы одно значение удовлетворяет определенному условию, используйте метод numpy's any.

В приведенном коде показана разница в выводах между all и any.


import numpy as np

a = np.array([[1, 2, 1], [2, 2, 5]])

# get the rows whose all values are fewer than 3
mask_all = (a<3).all(axis=1)
print(a[mask_all])
"""
[[1 2 1]]
"""

mask_any = (a<3).any(axis=1)
print(a[mask_any])
"""
[[1 2 1]
[2 2 5]]
"""

Numpy docs

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Pydantic: 10 Most Common Usage Patterns

Pydantic: 10 наиболее распространенных вариантов использования

1. Basic Data Validation
Use Pydantic models to validate incoming data easily.

from pydantic import BaseModel

class User(BaseModel):
name: str
age: int

user = User(name='John Doe', age=30)

2. Default Values
Define default values for your model fields.

class User(BaseModel):
name: str
age: int = 18 # Default value


3. Optional Fields
Mark fields as optional using the Optional type.

from typing import Optional

class User(BaseModel):
name: str
age: Optional[int] = None

4. Custom Validators
Create custom validators with the @validator decorator.

from pydantic import validator

class User(BaseModel):
name: str
age: int

@validator('age')
def validate_age(cls, value):
if value < 18:
raise ValueError('User must be 18+')
return value


5. Nested Models

Use Pydantic models to validate nested data structures.

class Address(BaseModel):
street: str
city: str

class User(BaseModel):
name: str
age: int
address: Address

6. Lists of Models
Handle lists of a specific model.

from typing import List

class User(BaseModel):
name: str
age: int

class UserList(BaseModel):
users: List[User]

7. Union Fields
Use Union to allow a field to be one of several types.

from typing import Union

class User(BaseModel):
identifier: Union[str, int]


8. Value Constraints
Impose constraints on values using Field.

from pydantic import Field

class User(BaseModel):
name: str
age: int = Field(..., gt=0, lt=120) # Greater than 0, less than 120

9. Aliases for Fields

Define aliases for model fields, which can be useful for fields that are Python keywords.

class User(BaseModel):
name: str
class_: str = Field(alias='class')


10. Recursive Models
Make models that can contain themselves.

from typing import Optional

class TreeNode(BaseModel):
value: int
left: Optional['TreeNode'] = None
right: Optional['TreeNode'] = None

TreeNode.update_forward_refs() # Resolve string annotations

pydantic

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 6 Python f-strings tips and tricks

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

1. String Interpolation
The most used f-string feature by far is string interpolation. All you need to do is wrap the value or variable in curly braces ({}) and you're good to go.

str_val = 'apples'
num_val = 42

print(f'{num_val} {str_val}') # 42 apples


2. Variable names
Apart from getting a variable's value, you can also get its name alongside the value.

str_val = 'apples'
num_val = 42

print(f'{str_val=}, {num_val = }') # str_val='apples', num_val = 42


3. Mathematical operations
Not syntactically unlike variable names, you can also perform mathematical operations in f-strings.

num_val = 42

print(f'{num_val % 2 = }') # num_val % 2 = 0

4. Printable representation
Apart from plain string interpolation, you might want to get the printable representation of a value.

str_val = 'apples'

print(f'{str_val!r}') # 'apples'


5. Number formatting
Numbers are a great candidate for this. If, for example, you want to trim a numeric value to two digits after the decimal, you can use the .2f format specifier.

price_val = 6.12658

print(f'{price_val:.2f}') # 6.13


6. Date formatting
Finally, dates can also be formatted the same way as numbers, using format specifiers. As usual, %Y denotes the full year, %m is the month and %d is the day of the month.

from datetime import datetime;

date_val = datetime.utcnow()

print(f'{date_val=:%Y-%m-%d}') # date_val=2021-07-09


String Formatting Best Practices
F-strings или как сделать код чуть более быстрым

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
Example that demonstrates how to use Redis with the redis-py library, which is a popular Redis client for Python.

Redis – это быстрое хранилище данных типа «ключ‑значение» в памяти с открытым исходным кодом.
Ниже приведен пример, демонстрирующий, как использовать Redis с библиотекой redis-py, которая является популярным клиентом Redis для Python.

$ pip install redis

import redis

# Create a Redis client
r = redis.Redis(host='localhost', port=6379, db=0)

# String Operations
r.set('mykey', 'Hello Redis!')
value = r.get('mykey')
print(value) # Output: b'Hello Redis!'

# List Operations
r.lpush('mylist', 'element1')
r.lpush('mylist', 'element2')
r.rpush('mylist', 'element3')
elements = r.lrange('mylist', 0, -1)
print(elements) # Output: [b'element2', b'element1', b'element3']

# Set Operations
r.sadd('myset', 'member1')
r.sadd('myset', 'member2')
r.sadd('myset', 'member3')
members = r.smembers('myset')
print(members) # Output: {b'member2', b'member1', b'member3'}

# Hash Operations
r.hset('myhash', 'field1', 'value1')
r.hset('myhash', 'field2', 'value2')
value = r.hget('myhash', 'field1')
print(value) # Output: b'value1'

# Sorted Set Operations
r.zadd('mysortedset', {'member1': 1, 'member2': 2, 'member3': 3})
members = r.zrange('mysortedset', 0, -1)
print(members) # Output: [b'member1', b'member2', b'member3']

# Delete a key
r.delete('mykey')

# Close the Redis connection
r.close()


Github

@pythonl
🖥 5 Mistakes Every Python Developer Should Avoid!

5 ошибок, которых должен избегать каждый разработчик Python!

1. Avoid using global variables
Избегайте использовать глобальных переменных

# Using global variables
my_var = 42

def my_function():
global my_var
my_var += 1
return my_var

# Using local variables
def my_function2(my_var):
my_var += 1
return my_var


2. Avoid blocking I/O operations
Избегайте блокировки операций ввода/вывода

# Blocking I/O
import requests

response = requests.get('https://example.com')
print(response.text)

# Non-blocking I/O using asyncio
import asyncio
import aiohttp

async def fetch(session, url):
async with session.get(url) as response:
return await response.text()

async def main():
async with aiohttp.ClientSession() as session:
html = await fetch(session, 'https://example.com')
print(html)

asyncio.run(main())


3. Avoid using eval() and exec()
избегайте использования eval() и exec()

# Using eval() to execute code
my_var = '1 + 1'
result = eval(my_var)

# Using ast.literal_eval() to safely evaluate literals
import ast

my_var = '[1, 2, 3]'
result = ast.literal_eval(my_var)


4. Avoid using mutable default arguments
Избегайте использования изменяемых аргументов

# Using mutable default arguments
def my_function(my_list=[]):
my_list.append(1)
return my_list

result1 = my_function() # [1]
result2 = my_function() # [1, 1]

# Using immutable default arguments
def my_function2(my_list=None):
if my_list is None:
my_list = []
my_list.append(1)
return my_list

result3 = my_function2() # [1]
result4 = my_function2() # [1]


5. Avoid using *args and **kwargs excessively
Избегайте частого использования *args и **kwargs

def my_function(*args, **kwargs):
arg1 = args[0]
arg2 = kwargs.get('arg2', 'default_value')
return arg1, arg2

result = my_function('value1', arg2='value2')

# Using named arguments and default values
def my_function2(arg1, arg2='default_value'):
return arg


Article
10 самых распространенных ошибок Python

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 5 examples on how to improve your Python code

Полезные примеры того, как улучшить ваш код на Python

1. Using List Comprehensions

squares = []

for x in range(10):
squares.append(x**2)

print(squares)


2. Using Generators

with open('example.txt') as f:
for line in (line.strip() for line in f):
print(line)


3. Using the zip() function

names = ['Pippo', 'Pluto', 'Paperino']
ages = [25, 30, 35]

for name, age in zip(names, ages):
print(f'{name} is {age} years old')

4. Using DefaultDict

from collections import defaultdict

s = 'hello world'

d = defaultdict(int)
for c in s:
d[c] += 1

print(d)


5. Using enumerate()

fruits = ['apple', 'banana', 'cherry']

for i, fruit in enumerate(fruits):
print(f'{i}: {fruit}')

Techniques to Write Better Python Code
Улучшение Python-кода

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Quick and Dirty Guide To Numpy

Расширенный учебник по Numpy

Colab
NumPy Cheatsheets

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 typeshed

Typeshed contains external type annotations for the Python standard library and Python builtins, as well as third party packages as contributed by people external to those projects.

Typeshed содержит внешние аннотации типов для стандартной библиотеки Python и встроенных модулей Python, а также пакеты сторонних разработчиков.


🖥 Github

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Подборка полезных папок с каналами для датасаентисов

Папки, где вы найдете каналы с разбором лучших практик написания кода на Python и Golang до каналов по машинному обучению и нейросетям (папки работают на последних версиях тг).

https://yangx.top/addlist/2Ls-snqEeytkMDgy - Машинное обучение

https://yangx.top/addlist/8vDUwYRGujRmZjFi - Python

https://yangx.top/addlist/MUtJEeJSxeY2YTFi - Golang
🖥 Topological sorting

Реализация алгоритма топологической сортировки

# a
# / \
# b c
# / \
# d e
edges = {"a": ["c", "b"], "b": ["d", "e"], "c": [], "d": [], "e": []}
vertices = ["a", "b", "c", "d", "e"]


def topological_sort(start, visited, sort):

current = start

visited.append(current)
neighbors = edges[current]
for neighbor in neighbors:

if neighbor not in visited:
sort = topological_sort(neighbor, visited, sort)

sort.append(current)

if len(visited) != len(vertices):
for vertice in vertices:
if vertice not in visited:
sort = topological_sort(vertice, visited, sort)

return sort

if __name__ == "__main__":
sort = topological_sort("a", [], [])
print(sort)


Topological sorting
Топологическая сортировка

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 Roop

one-click deepfake (face swap)

Root крутой проект на Python для качественных дипфейков в один клик.


🖥 Github

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
Best-of Python

🏆 A ranked list of awesome Python open-source libraries & tools. Updated weekly.

Этот кураторский список содержит 390 крутых мл проектов с открытым исходным кодом на Python, в общей сложности 1,6 миллиона звезд, сгруппированных в 28 категорий.

Github

@pythonl
🖥 ReactPy

ReactPy is a library for building user interfaces in Python without Javascript.

ReactPy - это библиотека для создания пользовательских интерфейсов на языке Python без использования Javascript. Интерфейсы ReactPy создаются из компонентов, которые выглядят и ведут себя аналогично тем, что есть в ReactJS.

Github

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
💫 Lark - a parsing toolkit for Python

Lark can parse all context-free languages.

Lark - это набор инструментов синтаксического анализа для Python, созданный с упором на скорость, производительность и модульность.

$ pip install lark --upgrade

from lark import Lark

l = Lark('''start: WORD "," WORD "!"

%import common.WORD // imports from terminal library
%ignore " " // Disregard spaces in text
''')

print( l.parse("Hello, World!") )


Tree(start, [Token(WORD, 'Hello'), Token(WORD, 'World')])

Github

@pythonl
🔥 13 Django Packages to Every Developer Must Install

13 маст хэв пакетов Django, которые установить каждый разработчик.

1. Django Debug Toolbar

Этот мощный пакет предоставляет визуальный интерфейс для отладки, который выводит подробную информацию о SQL-запросах и их показателях производительности.
pip install django-debug-toolbar

2. Django Rest Framework

Этот комплексный пакет упрощает создание RESTful API, предоставляя надежные инструменты для сериализации, аутентификации и тд.
pip install djangorestframework

3. Celery

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

pip install celery

4. Django-Crispy-Forms

Этот удобный инструмент упрощает процесс рендеринга и стилизации форм.
pip install django-crispy-forms

5. Django-Cache

Этот пакет позволяет хранить часто используемые данные в памяти, уменьшая количество повторяющихся запросов к базе данных.
pip install django-cache

6. Django Allauth

Этот пакет предлагает комплексные функции регистрации пользователей, входа в систему и управления учетными записями.
pip install django-allauth

10. Django Guardian

Этот пакет позволяет вам управлять разрешениями на уровне объектов, позволяя определять контроль доступа для отдельных экземпляров моделей.
pip install django-guardian

11. Django Storages

Этот пакет интегрируется с популярными провайдерами облачных хранилищ, такими как Amazon S3 и Google Cloud Storage.
pip install django-storages

12. Django Compressor

Этот пакет автоматически объединяет и сжимает файлы CSS и JavaScript, уменьшая количество HTTP-запросов и улучшая время загрузки страниц.
pip install django-compressor

13. Django Haystack

Этот пакет интегрирует различные поисковые системы, такие как Elasticsearch и Solr, позволяя вам создать надежные поисковые возможности для вашего приложения.
pip install django-haystack

@pythonl