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
加入频道
🔩 Attrs

Its main goal is to help you to write concise and correct software without slowing down your code.

attrs - это пакет Python, который вернет радость от написания классов, избавив вас от муторной работы по реализации объектных протоколов (они же методы Дандера). Доверенный NASA для миссий на Марсе с 2020 года!

Его основная цель - помочь вам писать лаконичное и корректное программное обеспечение.


🖥 Github
🗒 Docs

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
🐍 Box

Box will automatically make otherwise inaccessible keys safe to access as an attribute. You can always pass conversion_box=False to Box to disable that behavior. Also, all new dict and lists added to a Box or BoxList object are converted automatically.

Словари Python с расширенным функциналом, которые помогут вам в написании скриптов.

from box import Box

movie_box = Box({ "Robin Hood: Men in Tights": { "imdb stars": 6.7, "length": 104 } })

movie_box.Robin_Hood_Men_in_Tights.imdb_stars


🖥 Github

#github #python

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
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