😐11👍7❤3🤨2
С 3.6 версии допускаются разделители в виде _ для повышения читаемости чисел. Функция float ожидает строку и игнорирует _. На более старших версиях будет ошибка
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥4❤3
print(2**1000)
10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376
Это очень удобно для таких областей, как криптография или научные вычисления, где часто требуется работа с очень большими числами.
Однако важно помнить, что хотя Python может обрабатывать такие большие числа, это может повлиять на производительность при выполнении операций с ними. Поэтому, если вам не нужна такая высокая точность, лучше использовать стандартные типы данных.
В целом, эта особенность Python делает его очень мощным инструментом для работы с целыми числами любого размера.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍7❤5
googlesearch — это простая в использовании библиотека для Python, которая позволяет отправлять запросы в Google и получать ссылки на результаты поиска прямо из вашего кода. Она предоставляет гибкий и мощный интерфейс, который можно настроить для различных задач поиска.Основной метод библиотеки — это функция
search(), которая возвращает результаты поиска в виде генератора, содержащего объекты SearchResult или URL-ссылки в зависимости от параметров.Аргументы функции:
term — строка с запросом, которую вы хотите найти в Google.num_results — количество результатов, которые нужно вернуть (по умолчанию 10).lang — язык результатов поиска (по умолчанию "en").proxy — возможность использования прокси для запросов (по умолчанию None).advanced — расширенный режим поиска, возвращает объекты с более детализированной информацией, такими как заголовок и описание страницы (по умолчанию False).sleep_interval — время ожидания между запросами в секундах (по умолчанию 0).timeout — максимальное время ожидания ответа от Google (по умолчанию 5 секунд).safe — настройка безопасного поиска: "off" для отключения, "active" для фильтрации контента для взрослых (по умолчанию "active").ssl_verify — возможность включить или отключить проверку SSL-сертификатов (по умолчанию None).region — регион для таргетирования поиска (по умолчанию None).from googlesearch import search
query = "Python best practices"
for result in search(query, num_results=5):
print(result)
for result in search("новости технологий", num_results=3, lang='ru', safe='off', region='RU', advanced=True):
print(result.title, result.url)RU. В данном случае возвращаются не только ссылки, но и заголовки страниц.googlesearch - это мощный инструмент, который позволяет интегрировать Google-поиск в Python-приложения, делая его отличным для автоматизации и поиска данных.Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍4🔥3
Шаг 1: Настройка проекта
Шаг 2: Установка библиотек
pip install qrcode Flask
Шаг 3: Написание кода
Откройте файл app.py и добавьте следующий код:
import qrcode
from flask import Flask, request, render_template, send_file
app = Flask(__name__)
@app.route("/", methods=["GET", "POST"])
def generate_qr():
if request.method == "POST":
data = request.form["data"]
qr_img = qrcode.make(data)
qr_path = "static/qr_code.png"
qr_img.save(qr_path)
return send_file(qr_path, mimetype='image/png')
return render_template("index.html")
if __name__ == "__main__":
app.run(debug=True)
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>QR-код генератор</title>
</head>
<body>
<h1>QR-код генератор</h1>
<form method="POST">
<input type="text" name="data" placeholder="Введите текст или URL">
<button type="submit">Сгенерировать QR-код</button>
</form>
{% if qr_code %}
<img src="{{ qr_code }}" alt="QR-код">
{% endif %}
</body>
</html>
Запустите приложение командой:
python app.py
Откройте браузер и перейдите по адресу http://127.0.0.1:5000. Вы увидите форму для ввода текста или URL. После ввода данных и нажатия кнопки "Сгенерировать QR-код", вы получите изображение с QR-кодом.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤3🔥2
Веб-приложение - это программное обеспечение, которое работает в веб-браузере. Основные характеристики веб-приложений включают:
Веб-приложения создаются с использованием различных технологий:
Многие популярные сервисы, которые мы используем ежедневно, являются веб-приложениями:
Веб-приложения имеют преимущество в виде встроенных функций безопасности, таких как HTTPS для шифрования передаваемых данных. Это освобождает разработчиков от необходимости создавать меры безопасности с нуля.
Типичное время загрузки веб-приложений:
Многие компании используют гибридный подход:
Веб-приложения имеют ряд преимуществ, которые делают их важными в современном мире:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤5🔥2
Многие статьи рекомендуют создавать полноценный React SPA и использовать Django только как REST API. Однако такой подход имеет ряд недостатков, особенно для небольших проектов:
Хотя для некоторых проектов это может быть приемлемым решением, для моего небольшого приложения такой подход кажется излишним.
Идея заключается в том, чтобы использовать React не как полноценный фронтенд-фреймворк, а как шаблонизатор для Django. Это позволит нам сохранить преимущества обоих инструментов.
React имеет удобное свойство: он монтируется не просто в
body DOM или случайное место, а именно в указанный вами элемент. Мы можем использовать это для реализации маршрутизации, используя одну точку монтирования для каждой страницы:ReactDOM.render(
<h1>Страница 1!</h1>,
document.getElementById('page-1')
);
ReactDOM.render(
<h1>Страница 2!</h1>,
document.getElementById('page-2')
);
На стороне Django нам нужно только отрендерить
<div> с соответствующим идентификатором:{% extends "base.html" %}
{% load static %}
{% block content %}
<div id="{{ element_id }}"></div>
<script src="{% static 'index.js' %}"></script>
{% endblock %}Чтобы не загружать JavaScript для неиспользуемых страниц, мы можем использовать встроенную функцию React - Code Splitting:
let Page1 = React.lazy(() => import('./page1'))
let Page2 = React.lazy(() => import('./page2'))
ReactDOM.render(
<Suspense fallback={<></>}>
<Page1/>
</Suspense>,
document.getElementById('page-1')
);Для передачи данных из Django в React мы можем использовать встроенный в Django тег
json_script:{% extends "base.html" %}
{% load static %}
{% block content %}
<div id="{{ element_id }}"></div>
{{ page_context | json_script:'page-context' }}
<script src="{% static 'index.js' %}"></script>
{% endblock %}export let usePageContext = <T = any>() => {
let [pageContext, setPageContext] = useState<T | undefined>(undefined)
useEffect(() => {
let pageContext = document.getElementById('page-context').textContent
setPageContext(JSON.parse(pageContext))
}, [])
return pageContext as T
}
const TodosIndexPage = memo(() => {
let pageContext = usePageContext<{ todos: Todo[] }>()
let todos = pageContext?.todos
return <>
<h1>React todos page</h1>
<ul>
{todos?.map(todo => <li key={todo.id}>{todo.title}</li>)}
</ul>
</>
})Этот подход позволяет использовать React как шаблонизатор для Django, сохраняя при этом простоту разработки и избегая дублирования кода. Основные шаги для реализации:
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥4👍3
Если у вас еще нет готового проекта Django, вы можете создать новый, выполнив следующие шаги:
virtualenv .env
source .env/bin/activate
pip install django
django-admin startproject languages
cd languages
python manage.py migrate
Убедитесь, что в вашем файле [settings.py](http://settings.py) включены следующие настройки:
USE_I18N = True
USE_L10N = True
Для перевода текста в шаблонах используйте тег {% trans %}:
{% load i18n %}
{% trans "Hello world! This is an HTML5 Boilerplate." %}Для перевода текста в представлениях используйте функцию gettext:
from django.utils.translation import gettext as _
def index(request):
text = _("this is some random text")
return render(request, 'home.html', {'text': text})
Создайте каталог для хранения переводов и выполните команду для создания файлов перевода:
mkdir -p locale
django-admin makemessages --ignore="static" --ignore=".env" -l nl
Отредактируйте файл django.po в созданном каталоге locale, добавив переводы для каждой строки:
#: home/templates/home.html:19
msgid "Hello world! This is an HTML5 Boilerplate."
msgstr "Hallo wereld! Dit is een HTML5 Boilerplate."
После редактирования файлов перевода, скомпилируйте их:
django-admin compilemessages
Добавьте поле для выбора языка в модель пользователя:
LANGUAGE_CHOICES = (
('en-us', 'English'),
('nl', 'Dutch'),
)
language = models.CharField(default='en-us', choices=LANGUAGE_CHOICES, max_length=5)
В представлении активируйте язык на основе настроек пользователя:
from django.utils import translation
def index(request):
if request.user.is_authenticated:
translation.activate(request.user.language)
return render(request, 'home.html')
Следуя этим шагам, вы сможете добавить поддержку нескольких языков в ваш Django-проект. Не забывайте обновлять файлы перевода при добавлении нового текста и компилировать их после внесения изменений.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤3🔥1
Forwarded from IT memer
Please open Telegram to view this post
VIEW IN TELEGRAM
😁25👍5🤣5❤1
Основой для рисования в Tkinter является виджет Canvas (холст). Вот как можно создать простое окно с холстом:
from tkinter import *
class Application(Frame):
def __init__(self, master):
super().__init__(master)
self.master = master
self.pack()
self.create_widget()
def create_widget(self):
self.canvas = Canvas(self, width=200, height=200, bg='white')
self.canvas.pack()
self.canvas.bind('<B1-Motion>', self.draw)
def draw(self, event):
self.canvas.create_oval(event.x, event.y, event.x+1, event.y+1)
root = Tk()
root.geometry('200x200')
app = Application(root)
root.mainloop()
Ключевой метод для рисования - это функция
draw:def draw(self, event):
self.canvas.create_oval(event.x, event.y, event.x+1, event.y+1)
<B1-Motion>).Вы можете легко изменить размер "кисти", увеличив размер создаваемого овала:
def draw(self, event):
brush_size = 5
x1, y1 = (event.x - brush_size), (event.y - brush_size)
x2, y2 = (event.x + brush_size), (event.y + brush_size)
self.canvas.create_oval(x1, y1, x2, y2, fill='black')
Вы можете расширить функциональность вашего приложения для рисования, добавив следующие возможности:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥4❤3🤝2
Чтобы использовать Memray, нужно сначала установить его с помощью pip:
pip install memray
import memray
@memray.start()
def my_function():
# Пример кода, который может выделять память
a = [i for i in range(100000)]
b = [j ** 2 for j in a]
return b
my_function()
# Сохранение отчета о профилировании
memray.stop()
memray flamegraph <report_file>
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤3👍2
Перегрузка методов - это возможность класса иметь несколько методов с одинаковым именем, но разными параметрами. В Python прямая перегрузка методов не поддерживается, но похожего эффекта можно достичь с помощью параметров по умолчанию и аргументов переменной длины.
class MathOperations:
def add(self, a, b, c=0):
return a + b + c
math_op = MathOperations()
print(math_op.add(10, 20)) # Вывод: 30
print(math_op.add(10, 20, 30)) # Вывод: 60
Переопределение методов - это механизм, позволяющий подклассу предоставить свою реализацию метода, уже определенного в родительском классе. Это позволяет изменять или расширять поведение унаследованных методов.
class Animal:
def sound(self):
return "Какой-то звук"
class Dog(Animal):
def sound(self):
return "Гав"
class Cat(Animal):
def sound(self):
return "Мяу"
dog = Dog()
cat = Cat()
print(dog.sound()) # Вывод: Гав
print(cat.sound()) # Вывод: Мяу
Рассмотрим пример использования полиморфизма в системе обработки платежей:
class Payment:
def process(self, amount):
raise NotImplementedError("Подклассы должны реализовать этот метод")
class CreditCardPayment(Payment):
def process(self, amount):
return f"Обработан платеж кредитной картой на сумму {amount}."
class PayPalPayment(Payment):
def process(self, amount):
return f"Обработан платеж через PayPal на сумму {amount}."
credit_card = CreditCardPayment()
paypal = PayPalPayment()
print(credit_card.process(100))
print(paypal.process(200))
Полиморфизм в Python, реализуемый через переопределение методов и имитацию перегрузки, обеспечивает гибкость и возможность повторного использования кода. Эти концепции позволяют создавать более модульные, расширяемые и легко поддерживаемые программы. Эффективное использование полиморфизма - ключ к написанию чистого и элегантного кода на Python.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤3🔥2
🔥8👍3
Регистр тоже играет важную роль! Помни, что "a" - это не то же самое что "A"
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍10🔥3
Сделали для подписчиков наших каналов по Python небольшой розыгрыш звёзд😘
P.S. говорят если переслать этот розыгрыш друзьям, то шанс увеличится.
1 ноября в 18 часов по мск, 5 победителей получат по 100 звёзд, которые можно тратить в нашем и других каналах, дарить подарки и другое, удачи!
P.S. говорят если переслать этот розыгрыш друзьям, то шанс увеличится.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤1🥰1