Пишем на Python, создаём нейросети и ИИ-агентов.
Алгоритмы, задачи и вайбкодинг.
Личный блог автора - @just_genych
По вопросам рекламы или разработки: @g_abashkin
Post #1704
908
AB @python_tesst
Showing posts older than #1705 · Back to latest
• CI/CD, Docker, Jenkins, KVM, Kubernetes, Ansible, Bash, Python, GitLab, Grafana• от 300 000 до 350 000 ₽ | от 3 лет опыта• Python, Docker, Kubernetes, SQLAlchemy, PyQt6, lxml, pytest• Уровень дохода не указан | от 5 лет опыта• Python, FastAPI, PostgreSQL, SQLAlchemy, Kafka, Docker, Kubernetes• Уровень дохода не указан | от 3 лет опыта
char_count.json.python app.py count "Hello, World!" — выводит количество каждого символа и сохраняет в char_count.json.import json
import sys
from collections import Counter
def count_chars(text):
count = Counter(text)
print(count)
with open('char_count.json', 'w') as f:
json.dump(count, f)
if __name__ == "__main__":
if len(sys.argv) > 1:
count_chars(sys.argv[1])
else:
print("Укажите строку для подсчета символов.")
• Python, FastAPI, aiohttp, polars, Spark, Jupyter, ElasticSearch, PostgreSQL, Redis, RabbitMQ, Kubernetes, GitLab CI• от 150 000 до 250 000 ₽ | от 1 года опыта• Python, SQL, Docker, Kubernetes• Уровень дохода не указан | от 1 года опыта• Python, SQL, Firebird, Apache2, Nginx, REST API, JSON-RPC, Git• Уровень дохода не указан | от 1 года опыта__enter__ и __exit__.with open('file.txt', 'r') as file:
content = file.read()with, даже если внутри него возникнет ошибка.🗣️ Менеджеры контекста полезны для автоматического управления ресурсами и обработки исключений.
python monitor.py https://example.com — проверяет доступность сервера по адресу https://example.com, отправляет уведомление на почту, если сервер перестаёт отвечать, и повторно уведомляет при восстановлении работы.import requests
import time
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import sys
# Настройки для отправки уведомлений
SMTP_SERVER = 'smtp.example.com'
SMTP_PORT = 587
EMAIL = 'your-email@example.com'
PASSWORD = 'your-password'
TO_EMAIL = 'recipient@example.com'
# Функция для отправки уведомления
def send_notification(subject, message):
msg = MIMEMultipart()
msg['From'] = EMAIL
msg['To'] = TO_EMAIL
msg['Subject'] = subject
msg.attach(MIMEText(message, 'plain'))
with smtplib.SMTP(SMTP_SERVER, SMTP_PORT) as server:
server.starttls()
server.login(EMAIL, PASSWORD)
server.sendmail(EMAIL, TO_EMAIL, msg.as_string())
print(f"Уведомление отправлено: {subject}")
# Функция для проверки доступности сервера
def check_server(url):
try:
response = requests.get(url, timeout=5)
return response.status_code == 200
except requests.RequestException:
return False
# Основная функция мониторинга
def monitor(url):
server_is_down = False
while True:
is_up = check_server(url)
if is_up and server_is_down:
send_notification("Сервер восстановлен", f"Сервер {url} снова доступен.")
server_is_down = False
elif not is_up and not server_is_down:
send_notification("Сервер недоступен", f"Сервер {url} перестал отвечать.")
server_is_down = True
time.sleep(300) # Проверка каждые 5 минут
if __name__ == "__main__":
if len(sys.argv) < 2:
print("Укажите URL сервера для мониторинга.")
sys.exit(1)
url = sys.argv[1]
monitor(url)
None.[10, 20, 4, 45, 99]
45
[5, 5, 5]
None
def find_second_largest(numbers):
# Удаляем дубликаты и сортируем список в порядке убывания
unique_numbers = sorted(set(numbers), reverse=True)
# Если уникальных чисел меньше двух, возвращаем None
return unique_numbers[1] if len(unique_numbers) >= 2 else None
# Пример использования:
print(find_second_largest([10, 20, 4, 45, 99])) # Ожидаемый результат: 45
print(find_second_largest([5, 5, 5])) # Ожидаемый результат: None
• Python, Linux, Java, CI/CD, Docker, Тестирование API, Тестирование UI, Разработка тест-кейсов• Уровень дохода не указан | от 4 лет опыта• Python, SQL• Уровень дохода не указан | более 5 лет опыта• Python, Linux, Openstack, Golang• Уровень дохода не указан | от 3 лет опыта@property в Python и зачем он нужен?@property в Python превращает метод класса в атрибут, позволяя работать с ним, как с обычным свойством. Это упрощает доступ к приватным данным и добавляет контроль за их валидацией и изменением.@property можно создавать интерфейс для работы с данными объекта, защищая их от некорректных значений и обеспечивая читаемость кода.@property используется для создания свойства age, которое проверяет корректность введенного значения:class Person:
def __init__(self, age):
self._age = age
@property
def age(self):
return self._age
@age.setter
def age(self, value):
if value < 0:
raise ValueError("Возраст не может быть отрицательным.")
self._age = value
p = Person(30)
p.age = 35 # Работает нормально
print(p.age) # 35
p.age = -5 # ValueError: Возраст не может быть отрицательным.
🗣 Использование @property полезно для создания аккуратного интерфейса доступа к данным с их защитой и валидацией, соблюдая при этом принципы инкапсуляции.