__new__()
отвечает за создание нового экземпляра класса. Он вызывается перед __init__()
и возвращает новый объект. Этот метод редко переопределяется, но полезен при работе с неизменяемыми типами или при необходимости контролировать создание объектов.
class Singleton:
_instance = None
def __new__(cls, *args, **kwargs):
if cls._instance is None:
cls._instance = super().__new__(cls)
return cls._instance
В этом примере
__new__()
используется для реализации паттерна Singleton. При каждом вызове конструктора возвращается один и тот же экземпляр класса. Если экземпляр уже существует, новый не создается. Это демонстрирует, как __new__()
может управлять процессом создания объектов.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤1
enumerate()
в цикле for
позволяет одновременно получать индекс элемента и сам элемент при итерации по последовательности. Это удобно, когда нужно знать не только значение, но и его позицию.
fruits = ['apple', 'banana', 'cherry']
for index, fruit in enumerate(fruits):
print(index, fruit)
В данном примере
enumerate()
возвращает кортежи, где первый элемент — это индекс, а второй — значение из списка. По умолчанию индексация начинается с 0, но можно указать стартовое значение через параметр start
.
for index, fruit in enumerate(fruits, start=1):
print(index, fruit)
Таким образом,
enumerate()
упрощает код, избавляя от необходимости вручную управлять индексом.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1
1. Числовые литералы: целые числа, числа с плавающей точкой, комплексные числа.
42 # целое число
3.14 # число с плавающей точкой
2 + 3j # комплексное число
2. Строковые литералы: последовательности символов, заключенные в кавычки.
"Hello, World!" # строка в двойных кавычках
'Python' # строка в одинарных кавычках
3. Булевы литералы: значения
True
и False
.
True # истина
False # ложь
4. Специальный литерал:
None
, обозначающий отсутствие значения.
None # отсутствие значения
5. Коллекции: списки, кортежи, словари, множества.
[1, 2, 3] # список
(1, 2, 3) # кортеж
{'a': 1, 'b': 2} # словарь
{1, 2, 3} # множество
Литералы используются для инициализации переменных, передачи значений в функции и других операций.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤3
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1
__init__
. Этот метод автоматически вызывается при создании объекта класса и используется для инициализации атрибутов.
class MyClass:
def __init__(self, value):
self.value = value # Инициализация атрибута
Первый параметр
self
ссылается на текущий экземпляр класса. Остальные параметры передаются при создании объекта.
obj = MyClass(10) # Создание объекта с передачей аргумента
Конструктор может быть пустым, если инициализация не требуется.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
global
.
x = 10 # Глобальная переменная
def modify_global():
global x # Указываем, что используем глобальную переменную
x = 20 # Изменяем её значение
modify_global()
print(x) # Выведет 20
Без
global
внутри функции создается локальная переменная, даже если имя совпадает с глобальной. Использование global
позволяет изменять значение глобальной переменной напрямую.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤2
Для этого доступны несколько методов:
1. Перевод строки в верхний регистр:
2. Перевод строки в нижний регистр:
3. Инверсия регистра:
4. Каждое слово с заглавной буквы:
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
1. Перевод строки в верхний регистр:
text = "Hello, World!"
upper_text = text.upper()
# Результат: "HELLO, WORLD!"
2. Перевод строки в нижний регистр:
text = "Hello, World!"
lower_text = text.lower()
# Результат: "hello, world!"
3. Инверсия регистра:
text = "Hello, World!"
swapped_text = text.swapcase()
# Результат: "hELLO, wORLD!"
4. Каждое слово с заглавной буквы:
text = "hello world"
title_text = text.title()
# Результат: "Hello World"
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1
def greet(name, message):
print(f"{message}, {name}!")
greet("Alice", "Hello") # Позиционная передача
greet(message="Hi", name="Bob") # Именованная передача
В Python также поддерживаются аргументы по умолчанию, которые используются, если значение не передано явно. Переменное количество аргументов можно обработать с помощью *args и **kwargs.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1😎1
my_list = [1, 2, 3]
my_list.clear() # Очистка списка
my_list = [1, 2, 3]
my_list[:] = [] # Очистка с использованием среза
Оба способа удаляют все элементы, но метод clear() является более явным и читаемым.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6✍2
numbers = [10, 20, 5, 30]
min_value = min(numbers) # Находит минимальное значение (5)
max_value = max(numbers) # Находит максимальное значение (30)
Также можно передать ключевой параметр key для определения критерия сравнения, например, для поиска минимальной или максимальной строки по длине.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1
True
(истина) и False
(ложь). Они часто используются для проверки условий, управления потоком выполнения программы и в логических операциях.
x = 10
y = 20
is_greater = x > y # Сравнение, результат будет False
if is_greater:
print("x больше y") # Этот блок не выполнится
else:
print("x не больше y") # Выведет "x не больше y"
Булевы значения также могут быть результатом логических операций, таких как
and
, or
и not
.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7👨💻3
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1
try
используется для обработки исключений и предотвращения аварийного завершения программы. Код внутри try
выполняется, и если возникает ошибка, управление передается в блок except
, где можно обработать исключение.
try:
result = 10 / 0 # Попытка деления на ноль
except ZeroDivisionError:
result = "Ошибка: деление на ноль" # Обработка исключения
print(result) # Выведет "Ошибка: деление на ноль
Блок
finally
можно добавить для выполнения кода независимо от того, произошло исключение или нет.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1
extend()
используется для добавления элементов из одного списка в конец другого. В отличие от append()
, который добавляет весь объект как один элемент, extend()
добавляет каждый элемент итерируемого объекта по отдельности.
list1 = [1, 2, 3]
list2 = [4, 5]
list1.extend(list2) # Добавляет элементы из list2 в list1
print(list1) # Результат: [1, 2, 3, 4, 5]
Этот метод изменяет исходный список и не возвращает новый.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1
yield
. В отличие от обычных функций, генератор сохраняет состояние между вызовами и не вычисляет все элементы сразу, что полезно для работы с большими объемами данных.
def generate_numbers():
for i in range(3):
yield i # Возвращает значение и приостанавливает выполнение
for num in generate_numbers():
print(num) # Поочередно выведет 0, 1, 2
Генераторы экономят память, так как элементы создаются "на лету".
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2✍2
API должен быть stateless (не сохранять состояние клиента между запросами) и поддерживать кэширование для повышения производительности. Также важно использовать коды состояния HTTP для информирования клиента о результате запроса.
# Пример URI для ресурса
/users # GET — получить список пользователей
/users/1 # GET — получить данные пользователя с ID 1
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1