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
加入频道
🖥 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
🎮 Code For Games in Python: Free Python Games Source Code

20 игр на Python с полным кодом.

1. Mario Game

Делаем Марио. Создаем днопользовательскую игру, где игрок (Марио) должен уворачиваться от огненных шаров, вылетающих из дракона.

2. Dino Game
Это клон-адаптация игры с динозавриком на google chrome под названием "T-Rex Dino Run".

3. Simple Fighting Game

Простй файтинг.
Игра ведется в простом интерфейсе, в котором используются только кнопки и текст.

4. Jumbled Word Quiz Game
Игра квиз.
Человек может начать викторину, нажав на кнопку "Старт". Также можно выбрать тип слов, которые необходимо исправить в викторине.


5. Rock-Paper-Scissor Game
Игра "Камень, бумага, ножницы" на Python разработана с использованием Tkinter и графического интерфейса пользователя (GUI).

6. Bouncing Ball Game
Эта игра "Прыгающий мяч" использует Canvas для прорисовки объектов.

7. Hangman Game
Игра "Виселица" не требует никаких специальных модулей, кроме random и time.

8. Snake Game
Игра "Змейка" - это классическая аркадная игра.

9. Aircraft War Game
Военная игра "Самолеты" на Python на pygame

10. Tank Game
Это игра между компьютером и пользователем. Простая танковая игра Python.

11. Stickman
Игра с хорощей графикой и удобным управлением.

12. Tetris
Создаем свой тетрис на питоне.

13. Snakes and Ladders

Игра змейки и лестницы.

14. Speed Typing Test
Делаем свой тест на скорость печати.

15. Puzzle Game
Пазл с доской 4*4 и с 15 номерами.

16. Guess the Word Game
Игра угадай слово.

17. Tic Tac Toe Game
Все правила игры такие же, как и в игре в крестики-нолики в реальном времени.

18. F1 Race Road Game
Простые гоники.

19. Flappy Bird
Делаем легендарную флаппи берд.

20. Quiz Application
Квиз на Python.

@pythonl
🔥 5 примеров использования Redis с кодом на Python

1. Caching
Redis можно использовать для кэширования часто используемых данных, снижая нагрузку на ваше основное хранилище данных. Вот пример того, как реализовать кэширование с помощью Redis в Python

import redis

# Connect to Redis
r = redis.Redis(host='localhost', port=6379, db=0)

def get_data_from_cache(key):
# Check if data exists in the cache
if r.exists(key):
# Retrieve data from the cache
data = r.get(key)
return data.decode('utf-8') # Convert bytes to string
else:
# Fetch data from the primary data source
data = fetch_data_from_source()

# Store data in the cache with a timeout of 1 hour
r.setex(key, 3600, data)
return data


2. Pub/Sub (Publish/Subscribe):
Redis поддерживает паттерн pub/sub, позволяя вам создавать системы обмена сообщениями. Вот пример:

import redis
import time

# Connect to Redis
r = redis.Redis(host='localhost', port=6379, db=0)

def publish_message(channel, message):
# Publish a message to the specified channel
r.publish(channel, message)

def subscribe_channel(channel):
# Subscribe to a channel and process incoming messages
pubsub = r.pubsub()
pubsub.subscribe(channel)

for message in pubsub.listen():
print(message['data'].decode('utf-8')) # Process the received message


3. Rate Limiting:
Redis можно использовать для реализации ограничения скорости, чтобы контролировать количество запросов или операций за период времени. Пример:

import redis

# Connect to Redis
r = redis.Redis(host='localhost', port=6379, db=0)

def check_rate_limit(ip_address):
# Increment the request count for the IP address
request_count = r.incr(ip_address)

# If the count exceeds the limit (e.g., 100 requests per minute), deny the request
if request_count > 100:
return False

return True


4. Session Storage:
Redis можно использовать для хранения данных сеанса в веб-приложениях. Пример:

import redis
import uuid

# Connect to Redis
r = redis.Redis(host='localhost', port=6379, db=0)

def create_session(user_id):
# Generate a unique session ID
session_id = str(uuid.uuid4())

# Store the session data in Redis with a timeout of 30 minutes
r.setex(session_id, 1800, user_id)

return session_id

def get_user_id_from_session(session_id):
# Retrieve the user ID from the session data in Redis
user_id = r.get(session_id)

if user_id is not None:
return user_id.decode('utf-8') # Convert bytes to string
else:
return None


5. Leaderboard:
Redis можно использовать для создания таблиц лидеров или рейтингов на основе набранных баллов. Пример:

import redis

# Connect to Redis
r = redis.Redis(host='localhost', port=6379, db=0)

def update_score(player_id, score):
# Update the score of a player
r.zadd('leaderboard', {player_id: score})

def get_leaderboard():
# Get the top 10 players from the leaderboard
leaderboard = r.zrevrange('leaderboard', 0, 9, withscores=True)

for player, score in leaderboard:
print(f"Player: {player.decode('utf-8')}, Score: {score}")


Это лишь несколько примеров того, как Redis можно использовать в Python. Redis предоставляет множество других мощных функций и структур данных, которые можно использовать в различных приложениях.

Github

@data_analysis_ml
Top 10 Python Functions

Топ-10 полезных функций Python, о которых вы возможно не знаете.

1. The Elusive enumerate() 🗂

or index, value in enumerate(["apple", "banana", "cherry"], start=1):
print(f"The index is {index} and the value is {value}")


2. zip() Up Your Lists 🤐

names = ["Batman", "Superman", "Wonder Woman"]
superpowers = ["Rich", "Strong", "Lasso of Truth"]

for hero, power in zip(names, superpowers):
print(f"{hero} is really just super {power}!")


3. collections.Counter() — The Crowd Tamer 📊

from collections import Counter
party_list = ["Alice", "Bob", "Alice", "Eve", "Bob", "Eve", "Alice"]
print(Counter(party_list))
# Output: Counter({'Alice': 3, 'Bob': 2, 'Eve': 2})


4. functools.lru_cache() — The Time Traveler

from functools import lru_cache

@lru_cache
def fib(n):
if n < 2:
return n
return fib(n-1) + fib(n-2)


5. All Aboard the any() and all() Express 🚂

friends_going = [False, False, True, False]
print(any(friends_going)) # Output: True

chores_done = [True, True, True, True]
print(all(chores_done)) # Output: True


6. Get Slick with itertools.chain() 🚲

from itertools import chain

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
combined = list(chain(list1, list2))
print(combined) # Output: [1, 2, 3, 'a', 'b', 'c']


7. The Great defaultdict() Magician 🎩

from collections import defaultdict

d = defaultdict(int)
print(d["new_key"]) # Output: 0, and "new_key" is now a key in the dict


8. Jazz Up with reversed() 🔄

original_list = [1, 2, 3, 4, 5]
for item in reversed(original_list):
print(item, end=' ') # Output: 5 4 3 2 1


9. Don’t Get Lost, Use pathlib.Path() 🗺

from pathlib import Path

# Navigate to your home directory and create a file there.
home = Path.home()
file = home / "treasure_map.txt"
file.touch()
print(f"Your treasure map is located at: {file}")


10. The Underestimated else in Loops 🎢

for i in range(5):
if i == 10:
break
else:
print("Loop completed without a 'break'. Batman approves.")


Disclaimers 📢:

📌Будьте осторожны при использовании таких функций, как itertools.chain() и collections.Counter() на больших наборах данных. Они могут потреблять больше памяти, чем слон на шведском столе. 🐘

📌Не злоупотребляйте функцией functools.lru_cache(). Это как машина времени - слишком много возиться с ней может привести к нежелательным последствиям.

📌Хотя defaultdict() - волшебная функция, убедитесь, что вы действительно хотите добавить новый ключ в свой dict, иначе словарь может бесконтрольно расти,

@pythonl
📩 Python Email Automation Script

Вот пример базового скрипат Python для автоматизации простой задачи отправки электронной почты.


import smtplib
from email.mime.text import MIMEText


sender_email = "[email protected]"
recipient_email = "[email protected]"

subject = "Automated Email"
message = "This is an automated email sent using Python."


# SMTP server configuration (example: Gmail)


smtp_server = "smtp.gmail.com"
smtp_port = 587
smtp_username = "your_username"
smtp_password = "your_password"



msg = MIMEText(message)
msg["Subject"] = subject
msg["From"] = sender_email
msg["To"] = recipient_email
try:

server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()
server.login(smtp_username, smtp_password)
server.sendmail(sender_email, recipient_email, msg.as_string())
print("Email sent successfully!")

except Exception as e:
print("Error sending email:", str(e))

finally:

server.quit()

@pythonl
💲 Awesome OSS Monetization

A curated list of awesome monetization approaches for open source software.

Кураторский список практичных подходов к монетизации программного обеспечения с открытым исходным кодом.

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


🖥 Github

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
Stock Recommendations from Yahoo Finance Using ML Models in Python.

Строим модель рекомендации по акциям от Yahoo Finance с использованием ML-моделей на Python.

import yfinance as yf
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
import matplotlib.pyplot as plt

symbol = 'AAPL'
stock_data = yf.download(symbol, start='2022-01-05', end='2023-01-06')

df = pd.DataFrame(stock_data)

df['DailyReturn'] = df['Close'].pct_change()
df['Target'] = df['DailyReturn'].apply(lambda x: 1 if x > 0 else 0)

df = df.dropna()

X = df[['Open', 'High', 'Low', 'Close', 'Volume']]
y = df['Target']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

y_pred = model.predict(X_test)

predictions_df = pd.DataFrame({'Actual': y_test, 'Predicted': y_pred})

plt.figure(figsize=(10, 6))
plt.plot(predictions_df.index, predictions_df['Actual'], label='Actual')
plt.plot(predictions_df.index, predictions_df['Predicted'], label='Predicted')
plt.xlabel('Date')
plt.ylabel('Target')
plt.title('Actual vs. Predicted Stock Recommendations')
plt.legend()
plt.show()


@pythonl
☎️ How to Schedule WhatsApp Messages Using Python and PyWhatKit

В посте мы рассмотрим, как использовать PyWhatKit для создания отложенных сообщений WhatsApp с помощью Python. 🐍

pip install pywhatkit

import pywhatkit

phone_num = '+123456789'
message = 'hello'
hour = 17
minute = 25

try:
pywhatkit.sendwhatmsg(phone_num, message, hour, minute)
print(f'Message sent to {phone_num} successfully!')
except Exception as e:
print(f'Error: {str(e)}')


Github
Docs

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