# Определяем декоратор
def my_decorator(func):
# Вложенная функция, которая будет оборачивать оригинальную функцию
def wrapper():
print("Что-то происходит до вызова функции.")
func() # Вызов оригинальной функции
print("Что-то происходит после вызова функции.")
return wrapper # Возвращаем обернутую функцию
# Используем декоратор
@my_decorator
def say_hello():
print("Привет!")
# Вызов функции
say_hello()
my_decorator
— это декоратор, который добавляет поведение до и после вызова функции say_hello
. Когда say_hello
вызывается, сначала выполняется код из wrapper
, а затем оригинальная функция say_hello
.datetime
в Python предоставляет классы для работы с датами и временем. Вот несколько примеров использования этого модуля:
import datetime
# Получаем текущую дату и время
now = datetime.datetime.now()
# Выводим текущую дату и время
print("Текущая дата и время:", now)
import datetime
# Создаем объект даты
specific_date = datetime.datetime(2023, 10, 23) # Год, месяц, день
# Выводим конкретную дату
print("Конкретная дата:", specific_date)
import datetime
# Получаем текущую дату
now = datetime.datetime.now()
# Форматируем дату в строку
formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
# Выводим отформатированную дату
print("Отформатированная дата:", formatted_date)
import datetime
# Получаем текущую дату
now = datetime.datetime.now()
# Добавляем 10 дней к текущей дате
future_date = now + datetime.timedelta(days=10)
# Выводим новую дату
print("Дата через 10 дней:", future_date)
import datetime
# Строка с датой
date_string = "2023-10-23"
# Преобразуем строку в объект даты
parsed_date = datetime.datetime.strptime(date_string, "%Y-%m-%d")
# Выводим разобранную дату
print("Разобранная дата:", parsed_date)
import
. Существуют различные способы импорта, в зависимости от того, что требуется. Вот несколько примеров:
# Импортируем модуль math
import math
# Используем функцию sqrt из модуля math
result = math.sqrt(16) # Вычисляет квадратный корень
print(result) # Вывод: 4.0
# Импортируем только функцию sqrt из модуля math
from math import sqrt
# Используем функцию напрямую
result = sqrt(25) # Вычисляет квадратный корень
print(result) # Вывод: 5.0
# Импортируем модуль math с псевдонимом m
import math as m
# Используем функцию sqrt через псевдоним
result = m.sqrt(36) # Вычисляет квадратный корень
print(result) # Вывод: 6.0
# Определяем класс "Dog"
class Dog:
# Конструктор класса
def __init__(self, name, breed):
self.name = name # Имя собаки
self.breed = breed # Порода собаки
# Метод для представления информации о собаке
def bark(self):
return f"{self.name} говорит: Гав!"
# Создаем объект класса "Dog"
my_dog = Dog("Бобик", "Бульдог")
# Вызываем метод bark для объекта my_dog
print(my_dog.bark()) # Вывод: Бобик говорит: Гав!
Dog
с атрибутами name
и breed
, а также методом bark()
. Объект my_dog
является экземпляром класса Dog
и обладает свойствами и методами, определенными в этом классе.open()
. Вот пример кода:
# Открываем файл для записи (если файла нет, он будет создан)
with open('example.txt', 'w') as file:
# Записываем строку в файл
file.write('Hello, world!')
# Файл автоматически закроется после выхода из блока with
example.txt
будет создан в текущей директории, если он ещё не существует, и в него будет записана строка "Hello, world!". Если файл уже существует, его содержимое будет перезаписано.except
для обработки различных типов исключений. Это позволяет более точно управлять ошибками в коде, указывая, какое действие предпринимать в случае каждой конкретной ошибки.except
:
try:
# Код, который может вызвать исключение
num = int(input("Введите число: ")) # Можно ввести некорректное значение
result = 10 / num # Деление на ноль вызовет исключение ZeroDivisionError
print(f"Результат: {result}")
except ValueError: # Обработка ошибки преобразования в целое число
print("Ошибка: Введите корректное числовое значение.")
except ZeroDivisionError: # Обработка ошибки деления на ноль
print("Ошибка: Деление на ноль невозможно.")
except Exception as e: # Обработка всех остальных исключений
print(f"Произошла неожиданная ошибка: {e}")
try
для выполнения кода, который может вызвать исключения. Если пользователь вводит некорректное значение, срабатывает блок except ValueError
. Если введено значение 0, срабатывает блок except ZeroDivisionError
. Блок except Exception
позволяет отлавливать любые другие исключения, которые могут возникнуть.
# Определяем функцию с параметром по умолчанию
def greet(name="Гость"): # Аргумент name имеет значение по умолчанию "Гость"
print(f"Привет, {name}!")
# Вызов функции без аргумента
greet() # Вывод: Привет, Гость!
# Вызов функции с аргументом
greet("Алексей") # Вывод: Привет, Алексей!
greet
принимает один параметр name
, который имеет значение по умолчанию "Гость". При вызове функции без аргументов выводится стандартное приветствие. Если передано имя, используется указанное значение.if
в Python используется для выполнения определенного кода в зависимости от условия. Если условие истинно (True), выполняется блок кода, связанный с if
. При необходимости можно добавлять альтернативные условия с помощью elif
и else
.if
:
# Определяем переменную
x = 10
# Проверяем условие
if x > 0: # Если x положительное
print("x положительное число") # Выполняется, если условие истинно
elif x < 0: # Если x отрицательное
print("x отрицательное число") # Выполняется, если условие истинно
else: # Если обоих условий нет
print("x равно нулю") # Выполняется, если предыдущие условия ложны
x
положительным, отрицательным числом или нулем. В зависимости от результата выполняется соответствующий блок кода.
# Пример неизменяемой строки
s = "hello"
s[0] = "H" # Это вызовет ошибку
# Создание нового объекта
s = "H" + s[1:] # Теперь s будет равно "Hello"
# Пример изменяемого списка
my_list = [1, 2, 3]
my_list[0] = 10 # Изменение значения по индексу
# Теперь my_list будет равно [10, 2, 3]
my_list.append(4) # Добавление нового элемента в список
# Теперь my_list будет равно [10, 2, 3, 4]
# Это однострочный комментарий
print("Hello, world!") # Этот комментарий следует за кодом
"""
Это многострочный комментарий.
Он может занимать несколько строк.
"""
print("Привет, мир!")
break
. Когда break
встречается в цикле, выполнение этого цикла немедленно прекращается. Вот пример использования:
# Пример цикла for
for i in range(10):
if i == 5: # Условие для прерывания
print('Цикл прерван на числе:', i)
break # Прерываем цикл
print(i) # Выводим текущее значение i
i
становится равным 5, вызывается break
, и цикл прекращается.break
можно использовать в циклах while
:
# Пример цикла while
count = 0
while True: # Бесконечный цикл
if count == 3: # Условие для прерывания
print('Цикл прерван на счете:', count)
break # Прерываем цикл
print(count) # Выводим текущее значение count
count += 1 # Увеличиваем счётчик
count
не станет равным 3, после чего он будет прерван. Таким образом, можно управлять выполнением циклов с помощью оператора break
.int()
. Вот простой пример:
# Пример строки, содержащей число
string_number = "123"
# Преобразуем строку в целое число
integer_number = int(string_number)
# Выводим результат
print('Преобразованное целое число:', integer_number)
try-except
для обработки таких случаев:
# Пример строки с нечисловыми символами
string_number = "123abc"
try:
# Пробуем преобразовать строку в целое число
integer_number = int(string_number)
print('Преобразованное целое число:', integer_number)
except ValueError:
# Обработка ошибки, если строка не может быть преобразована
print('Ошибка: строка не является числом')
list
(список) и tuple
(кортеж). Вот основные различия между ними:list
является изменяемым объектом, что означает, что его содержимое можно изменять после создания.tuple
является неизменяемым, его содержимое нельзя изменять: добавлять, удалять или изменять элементы.[]
.()
.list
и tuple
:
# Создаем список
my_list = [1, 2, 3]
print('Список:', my_list)
# Изменяем список
my_list.append(4) # Добавляем элемент
print('Измененный список:', my_list)
# Создаем кортеж
my_tuple = (1, 2, 3)
print('Кортеж:', my_tuple)
# Попробуем изменить кортеж (это приведет к ошибке)
try:
my_tuple[0] = 10 # Пытаемся изменить элемент
except TypeError as e:
print('Ошибка:', e) # Выводим ошибку
list
и tuple
в Python.request
s. Вот пример, как это можно сделать:
import requests
# URL API, к которому мы будем отправлять запрос
url = 'https://api.example.com/data'
# Задаем заголовки запроса (если нужно)
headers = {
'Authorization': 'Bearer YOUR_ACCESS_TOKEN', # Токен авторизации
'Content-Type': 'application/json' # Формат данных
}
# Параметры запроса
params = {
'param1': 'value1', # Пример параметра
'param2': 'value2' # Другой пример параметра
}
# Выполняем GET-запрос
response = requests.get(url, headers=headers, params=params)
# Проверяем статус-код ответа
if response.status_code == 200:
data = response.json() # Парсим JSON-ответ
print(data) # Выводим данные
else:
print(f'Ошибка: {response.status_code}') # Сообщаем об ошибке
# Данные, которые мы хотим отправить на сервер
data = {
'key1': 'value1',
'key2': 'value2'
}
# Выполняем POST-запрос
response = requests.post(url, headers=headers, json=data)
# Проверяем статус-код ответа
if response.status_code == 201:
print('Данные успешно отправлены:', response.json()) # Выводим ответ от сервера
else:
print(f'Ошибка: {response.status_code}') # Сообщаем об ошибке
__iter__()
и метода __next__()
в классе. Это позволяет объектам вашего класса быть итерируемыми.
class SquareIterator:
def __init__(self, max_num):
self.max_num = max_num # Устанавливаем максимальное число
self.current = 0 # Начальное значение
def __iter__(self):
return self # Возвращаем сам итератор
def __next__(self):
if self.current < self.max_num:
square = self.current ** 2 # Вычисляем квадрат текущего числа
self.current += 1 # Увеличиваем текущее число
return square # Возвращаем квадрат
else:
raise StopIteration # Останавливаем итерацию, если предел достигнут
# Использование созданного итератора
squares = SquareIterator(5) # Создаем итератор для квадратов чисел от 0 до 4
for square in squares:
print(square) # Выводит: 0, 1, 4, 9, 16
__init__
принимает максимальное число, до которого будут вычисляться квадраты, и инициализирует текущее число.__iter__
Этот метод должен возвращать объект итератора. В данном случае он возвращает сам класс.StopIteration
, чтобы сигнализировать об окончании итерации.pickle
и json
.pickle
позволяет сериализовать и десериализовать объекты Python.
import pickle
# Пример объекта для сериализации
data = {
'name': 'Alice',
'age': 30,
'is_employee': True
}
# Сериализация объекта в файл
with open('data.pkl', 'wb') as file:
pickle.dump(data, file) # Записываем объект в файл
# Десериализация объекта из файла
with open('data.pkl', 'rb') as file:
loaded_data = pickle.load(file) # Читаем объект из файла
print(loaded_data) # Выводит: {'name': 'Alice', 'age': 30, 'is_employee': True}
json
используется для работы с JSON-форматом, который является текстовым форматом и более удобен для межъязыкового обмена данными.
import json
# Пример объекта для сериализации
data = {
'name': 'Alice',
'age': 30,
'is_employee': True
}
# Сериализация объекта в JSON и запись в файл
with open('data.json', 'w') as file:
json.dump(data, file) # Записываем объект в JSON формате
# Десериализация объекта из JSON файла
with open('data.json', 'r') as file:
loaded_data = json.load(file) # Читаем объект из JSON файла
print(loaded_data) # Выводит: {'name': 'Alice', 'age': 30, 'is_employee': True}
pickle
и json
можно легко сериализовать и десериализовать объекты в Python, что позволяет сохранять состояние программ или передавать данные между различными системами.
import os
# Получение списка файлов в директории
files = os.listdir('.')
print(files) # Выводит список файлов в текущей директории
import shutil
# Копирование файла
shutil.copy('source.txt', 'destination.txt') # Копирует source.txt в destination.txt
import glob
# Поиск всех текстовых файлов в текущей директории
txt_files = glob.glob('*.txt')
print(txt_files) # Выводит список всех .txt файлов
import fileinput
# Чтение строк из файла или нескольких файлов
for line in fileinput.input(('file1.txt', 'file2.txt')):
print(line) # Выводит строки из указанных файлов
import tempfile
# Создание временного файла
with tempfile.NamedTemporaryFile(delete=True) as temp_file:
temp_file.write(b'This is a temporary file.') # Запись данных во временный файл
temp_file.seek(0)
print(temp_file.read()) # Чтение данных из временного файла
clas
s. Вот пример простого класса:
class Dog:
# Конструктор класса
def __init__(self, name, age):
self.name = name # Имя собаки
self.age = age # Возраст собаки
# Метод для представления информации о собаке
def bark(self):
return f"{self.name} says Woof!"
# Метод для получения возраста собаки в человекских годах
def human_years(self):
return self.age * 7 # Примерное преобразование возраста
Do
g. Он имеет атрибуты nam
e и ag
e, а также два метода: bar
k, который возвращает звук, который издаёт собака, и human_year
s, который преобразует возраст собаки в "человеческие" года.
my_dog = Dog("Buddy", 3) # Создание экземпляра класса
print(my_dog.bark()) # Выводит: Buddy says Woof!
print(my_dog.human_years()) # Выводит: 21
open()
. Вот основные шаги:open()
, указав имя файла и режим открытия.'r'
.
# Открываем файл для чтения
with open('filename.txt', 'r') as file:
content = file.read() # Читаем все содержимое файла
print(content) # Выводим содержимое файла
with
, файл автоматически закроется после завершения блока кода, что является хорошей практикой. Если файл не существует или не может быть открыт, будет выдано исключение, которое можно обработать с помощью try-except
.