✏️ Вопрос с реального собеседования по Python
Что такое модуль в Python? Как узнать имя модуля? Что такое модульное программирование?
Модуль — это функционально законченный фрагмент программы, представленный в виде отдельного файла с исходным кодом или непрерывной части кода. С его помощью можно разбивать сложные задачи на более мелкие, что соответствует принципу модульности. Например, файл с кодом на Python является модулем, а модули могут объединяться в пакеты и библиотеки.
Как узнать имя модуля:
Каждый модуль в Python имеет глобальную переменную
Что такое модульное программирование:
Модульное программирование — это подход к созданию программ из небольших независимых блоков (модулей). Это упрощает тестирование, поиск ошибок, а также улучшает переносимость программ.
#собес_academy
Что такое модуль в Python? Как узнать имя модуля? Что такое модульное программирование?
Модуль — это функционально законченный фрагмент программы, представленный в виде отдельного файла с исходным кодом или непрерывной части кода. С его помощью можно разбивать сложные задачи на более мелкие, что соответствует принципу модульности. Например, файл с кодом на Python является модулем, а модули могут объединяться в пакеты и библиотеки.
Как узнать имя модуля:
Каждый модуль в Python имеет глобальную переменную
__name__
. Если модуль запущен как скрипт, то значение этой переменной будет __main__
.Что такое модульное программирование:
Модульное программирование — это подход к созданию программ из небольших независимых блоков (модулей). Это упрощает тестирование, поиск ошибок, а также улучшает переносимость программ.
#собес_academy
👍4🔥1
✏️ Вопрос с реального собеседования по Python
В чем разница между списком и кортежем?
1️⃣ Список можно изменить после создания
2️⃣ Кортеж нельзя изменить после создания
3️⃣ Список упорядочен. Он представляет собой упорядоченные последовательности объектов, как правило, одного и того же типа. Например, все имена пользователей упорядочены по дате создания: [«Max», «Steph», «Daphna»]
4️⃣ У кортежа есть структура. В каждом индексе могут сосуществовать различные типы данных. Например, такая запись базы данных в памяти: (2, «Steph», «2024–09–24») # id, name, created_at.
#собес_academy
В чем разница между списком и кортежем?
#собес_academy
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
✏️ Вопрос с реального собеседования по Python
Как выполняется интерполяция строк?
Без импорта класса Template есть три способа интерполяции строк:
#собес_academy
Как выполняется интерполяция строк?
Без импорта класса Template есть три способа интерполяции строк:
father = 'Boris'
# 1. f strings
print(f'Hello {father}')
# 2. % operator
print('Hey %s %s' % (father, father))
# 3. format
print(
"My father name is {}".format((father))
)
#собес_academy
👍1
✏️ Вопрос с реального собеседования по Python
В чем разница между «is» и «==»?
is проверяет идентичность, а == проверяет равенство.
Создайте несколько списков и назначьте им имена. Обратите внимание, что ниже b указывает на тот же объект, что и a:
Проверьте равенство и обратите внимание, что все объекты равны:
Но являются ли все они идентичными? Нет:
Можем проверить это, распечатав их идентификаторы объектов:
#собес_academy
В чем разница между «is» и «==»?
is проверяет идентичность, а == проверяет равенство.
Создайте несколько списков и назначьте им имена. Обратите внимание, что ниже b указывает на тот же объект, что и a:
a = [1,2,3]
b = a
c = [1,2,3]
Проверьте равенство и обратите внимание, что все объекты равны:
print(a == b)
print(a == c)
#=> True
#=> True
Но являются ли все они идентичными? Нет:
print(a is b)
print(a is c)
#=> True
#=> False
Можем проверить это, распечатав их идентификаторы объектов:
print(id(a))
print(id(b))
print(id(c))
#=> 4369567560
#=> 4369567560
#=> 4369567624
#собес_academy
👍5
✏️ Вопрос с реального собеседования по Python
Что такое функция range() и как её использовать
Функция range() создаёт последовательности целых чисел. Её можно применять в трёх вариантах:
Она может принимать от одного до трёх аргументов. В примерах ниже вывод обёрнут в список для отображения всех генерируемых значений.
1️⃣ range(stop): генерирует числа от 0 до значения stop (не включая его).
2️⃣ range(start, stop): генерирует числа от значения start до stop (также не включая stop).
3️⃣ range(start, stop, step): создаёт последовательность от start до stop, с шагом, равным значению step.
#собес_academy
Что такое функция range() и как её использовать
Функция range() создаёт последовательности целых чисел. Её можно применять в трёх вариантах:
Она может принимать от одного до трёх аргументов. В примерах ниже вывод обёрнут в список для отображения всех генерируемых значений.
[x for x in range(10)]
# Результат: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[x for x in range(3, 10)]
# Результат: [3, 4, 5, 6, 7, 8, 9]
[x for x in range(2, 10, 2)]
# Результат: [2, 4, 6, 8]
#собес_academy
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
✏️ Вопрос с реального собеседования по Python
Определите класс book с двумя атрибутами: название и автор. Затем создайте экземпляр и верните автора
Вот как это сделать:
#собес_academy
Определите класс book с двумя атрибутами: название и автор. Затем создайте экземпляр и верните автора
Вот как это сделать:
class Book:
def __init__(self, название, автор):
self.название = название
self.автор = автор
# Создаем экземпляр класса
книга = Book('Мастер и Маргарита', 'Михаил Булгаков')
# Выводим автора
книга.автор
# => 'Михаил Булгаков
#собес_academy
👍8
✏️ Вопрос с реального собеседования по Python
В чём разница между методами экземпляра, класса и статическими методами?
Методы экземпляра используют параметр self и относятся к конкретному экземпляру класса.
Статические методы с декоратором @staticmethod не связаны с экземпляром класса и не могут изменять его атрибуты.
Методы класса принимают параметр cls и позволяют изменять сам класс.
#собес_academy
В чём разница между методами экземпляра, класса и статическими методами?
Методы экземпляра используют параметр self и относятся к конкретному экземпляру класса.
Статические методы с декоратором @staticmethod не связаны с экземпляром класса и не могут изменять его атрибуты.
Методы класса принимают параметр cls и позволяют изменять сам класс.
class TeaShop:
specialty = 'green tea'
def __init__(self, tea_price):
self.tea_price = tea_price
# instance method
def make_tea(self):
print(f'Making {self.specialty} for ${self.tea_price}')
# static method
@staticmethod
def check_weather(): // Статический метод просто сообщает, что солнечно, не взаимодействуя с экземпляром или классом
print('Its sunny')
# class method
@classmethod
def change_specialty(cls, specialty): // Метод класса меняет фирменный напиток
cls.specialty = specialty
print(f'Specialty changed to {specialty}')
tea_shop = TeaShop(5) // Метод экземпляра (make_tea) создаёт чай с текущими атрибутами экземпляра
tea_shop.make_tea()
# => Making green tea for $5
#собес_academy
👍3
✏️ Вопрос с реального собеседования по Python
В чём разница между func и func()?
func — это объект функции, а func() — это вызов функции.
func: Это объект самой функции, который можно сохранить в переменную, передать в качестве аргумента другой функции. Например, если присвоить func новой переменной, например, new_func = func, то new_func() будет эквивалентен вызову func(). Без круглых скобок функция не выполняется, она просто существует как объект.
func(): Это фактический вызов функции. Круглые скобки указывают Python на выполнение кода внутри функции и возврат её результата. Если бы функция принимала аргументы, они передавались бы в скобках — например, func(arg1, arg2).
Пример для наглядности:
#собес_academy
В чём разница между func и func()?
func — это объект функции, а func() — это вызов функции.
func: Это объект самой функции, который можно сохранить в переменную, передать в качестве аргумента другой функции. Например, если присвоить func новой переменной, например, new_func = func, то new_func() будет эквивалентен вызову func(). Без круглых скобок функция не выполняется, она просто существует как объект.
func(): Это фактический вызов функции. Круглые скобки указывают Python на выполнение кода внутри функции и возврат её результата. Если бы функция принимала аргументы, они передавались бы в скобках — например, func(arg1, arg2).
Пример для наглядности:
def func():
print('I am a function')
# Присваиваем функцию переменной
new_func = func
new_func() # Вывод: I am a function
# Передаем функцию как аргумент другой функции
def call_func(f):
f() # Вызов переданной функции
call_func(func) # Вывод: I am a function
#собес_academy
👍5
✏️ Вопрос с реального собеседования по Python
Объясните, как работает функция map
map возвращает итератор, который применяет функцию к каждому элементу списка. Если нужно, его можно преобразовать в список:
В примере к каждому элементу списка добавляется 3.
#собес_academy
Объясните, как работает функция map
map возвращает итератор, который применяет функцию к каждому элементу списка. Если нужно, его можно преобразовать в список:
def add_three(y):
return y + 3
li = [1, 2, 3]
list(map(add_three, li))
#=> [4, 5, 6]
В примере к каждому элементу списка добавляется 3.
#собес_academy
👍2
✏️ Вопрос с реального собеседования по Python
Объясните, как работает функция reduce
Функция reduce может сначала показаться сложной, но как только вы попробуете её несколько раз, всё встанет на свои места.
🌻 Что делает reduce?
Она принимает функцию и последовательность. Затем последовательно применяет эту функцию к элементам, начиная с первых двух, и продолжает использовать результат предыдущей операции на следующем шаге. На выходе остаётся одно итоговое значение.
#собес_academy
Объясните, как работает функция reduce
Функция reduce может сначала показаться сложной, но как только вы попробуете её несколько раз, всё встанет на свои места.
Она принимает функцию и последовательность. Затем последовательно применяет эту функцию к элементам, начиная с первых двух, и продолжает использовать результат предыдущей операции на следующем шаге. На выходе остаётся одно итоговое значение.
from functools import reduce
# Определяем функцию сложения
def сложить_числа(первое, второе):
return первое + второе
# Исходный список
числа = [1, 2, 3, 5]
# Применяем reduce
итог = reduce(сложить_числа, числа)
print(итог) # => 11
#собес_academy
Please open Telegram to view this post
VIEW IN TELEGRAM
1
✏️ Вопрос с реального собеседования по Python
Как работает функция filter
Функция filter выполняет задачу, полностью соответствующую своему названию: она отбирает элементы из последовательности, которые соответствуют заданному условию.
Каждый элемент последовательности передается в указанную функцию. Если функция возвращает True, элемент остается в результате, если False — он исключается.
В результате остаются только те элементы, которые делятся на 2 без остатка, а остальные удаляются из последовательности.
#собес_academy
Как работает функция filter
Функция filter выполняет задачу, полностью соответствующую своему названию: она отбирает элементы из последовательности, которые соответствуют заданному условию.
Каждый элемент последовательности передается в указанную функцию. Если функция возвращает True, элемент остается в результате, если False — он исключается.
def is_even(number):
return number % 2 == 0
array = [1, 2, 3, 4, 5, 6, 7, 8]
filtered = [item for item in filter(is_even, array)]
print(filtered)
# Output: [2, 4, 6, 8]
В результате остаются только те элементы, которые делятся на 2 без остатка, а остальные удаляются из последовательности.
#собес_academy
👍1
✏️ Вопрос с реального собеседования по Python
Переменные в Python передаются по ссылке или по значению?
В Python переменные передаются по ссылке, но есть нюанс: одни объекты хранятся как данные, другие — как указатели.
Например, строки неизменяемы: если изменить их внутри функции, создаётся новый объект, а старый остаётся неизменным. Делая
#собес_academy
Переменные в Python передаются по ссылке или по значению?
В Python переменные передаются по ссылке, но есть нюанс: одни объекты хранятся как данные, другие — как указатели.
Например, строки неизменяемы: если изменить их внутри функции, создаётся новый объект, а старый остаётся неизменным. Делая
x = 'text'
и y = x
, вы создаёте две ссылки на один объект. Но если изменить x, это уже будет новая сущность, а y останется прежним.#собес_academy
🔥1
✏️ Вопрос с реального собеседования по Python
Как развернуть список?
Метод reverse() переворачивает список, но не возвращает его. Он изменяет сам объект.
Пример:
Если нужно получить новый перевёрнутый список, используйте срез:
#собес_academy
Как развернуть список?
Метод reverse() переворачивает список, но не возвращает его. Он изменяет сам объект.
Пример:
li = ['a', 'b', 'c']
print(li) # ['a', 'b', 'c']
li.reverse()
print(li) # ['c', 'b', 'a']
Если нужно получить новый перевёрнутый список, используйте срез:
new_list = li[::-1]
#собес_academy
👍1
✏️ Вопрос с реального собеседования по Python
Как работает умножение строк в Python?
Допустим, у нас есть строка 'cat', и мы хотим умножить её на 3. Давайте посмотрим:
⭐ Что произошло?
Python просто повторил содержимое строки трижды и вернул новый результат. Это удобно, когда нужно быстро создать повторяющийся шаблон или, например, добавить разделитель
#собес_academy
Как работает умножение строк в Python?
Допустим, у нас есть строка 'cat', и мы хотим умножить её на 3. Давайте посмотрим:
'cat' * 3
# => 'catcatcat'
Python просто повторил содержимое строки трижды и вернул новый результат. Это удобно, когда нужно быстро создать повторяющийся шаблон или, например, добавить разделитель
#собес_academy
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤1👍1
✏️ Вопрос с реального собеседования по Python
Как работает умножение списка в Python?
Когда в Python вы умножаете список на число, вы фактически дублируете его содержимое нужное количество раз. Давайте посмотрим, как это работает на примере:
⭐ Что произошло?
Список [1, 2, 3] скопировался дважды, и в результате получился новый список длиной 6 элементов.
#собес_academy
Как работает умножение списка в Python?
Когда в Python вы умножаете список на число, вы фактически дублируете его содержимое нужное количество раз. Давайте посмотрим, как это работает на примере:
my_list = [1, 2, 3]
result = my_list * 2
print(result)
# [1, 2, 3, 1, 2, 3]
Список [1, 2, 3] скопировался дважды, и в результате получился новый список длиной 6 элементов.
#собес_academy
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3😁2
✏️ Вопрос с реального собеседования по Python
Что такое self в Python
Self ссылается на конкретный экземпляр класса. Это нужно, чтобы методы могли обновлять и использовать данные именно этого объекта.
📌 Пример:
⭐ Что произошло
С помощью self мы задаём и используем свойства экземпляра, такие как color. В данном случае, self.color — это свойство, доступное конкретной рубашке.
#собес_academy
Что такое self в Python
Self ссылается на конкретный экземпляр класса. Это нужно, чтобы методы могли обновлять и использовать данные именно этого объекта.
📌 Пример:
class Shirt:
def __init__(self, color):
self.color = color # Свойство привязывается к экземпляру
s = Shirt('yellow') # Создаём рубашку жёлтого цвета
print(s.color) # => 'yellow'
С помощью self мы задаём и используем свойства экземпляра, такие как color. В данном случае, self.color — это свойство, доступное конкретной рубашке.
#собес_academy
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3😁1💯1
✏️ Вопрос с реального собеседования по Python
Как объединить списки
Для объединения списков достаточно сложить их с помощью оператора
Но помните: этот способ работает только со списками. Если вы попробуете объединить массивы (например, из NumPy), ничего не выйдет. Для массивов нужно использовать методы библиотеки, такие как
#собес_academy
Как объединить списки
Для объединения списков достаточно сложить их с помощью оператора
+
.list1 = [10, 20]
list2 = [30, 40, 50]
result = list1 + list2
print(result)
# Вывод: [10, 20, 30, 40, 50]
Но помните: этот способ работает только со списками. Если вы попробуете объединить массивы (например, из NumPy), ничего не выйдет. Для массивов нужно использовать методы библиотеки, такие как
np.concatenate()
#собес_academy
👍3
✏️ Вопрос с реального собеседования по Python
Глубокая и мелкая копии: в чем разница
Когда вы работаете с изменяемыми объектами, такими как списки, разница между глубокой и мелкой копией становится важной. Давайте разберем это на двух сценариях с примерами.
1️⃣ Мелкая копия
Создается новый объект, но элементы копируются по ссылке. Добавление новых элементов в оригинал не повлияет на копию, но изменения самих элементов — повлияют.
2️⃣ Глубокая копия
Глубокая копия создает независимый объект, включая его содержимое. Изменения в оригинале никак не затронут копию.
#собес_academy
Глубокая и мелкая копии: в чем разница
Когда вы работаете с изменяемыми объектами, такими как списки, разница между глубокой и мелкой копией становится важной. Давайте разберем это на двух сценариях с примерами.
Создается новый объект, но элементы копируются по ссылке. Добавление новых элементов в оригинал не повлияет на копию, но изменения самих элементов — повлияют.
list3 = [['a'], ['b'], ['c']]
list4 = list(list3)
list3.append(['d'])
print(list4)
# Вывод: [['a'], ['b'], ['c']]
list3[0][0] = 'X'
print(list4)
# Вывод: [['X'], ['b'], ['c']]
Глубокая копия создает независимый объект, включая его содержимое. Изменения в оригинале никак не затронут копию.
list5 = [['a'], ['b'], ['c']]
list6 = copy.deepcopy(list5)
list5.append(['d'])
list5[0][0] = 'X'
print(list6)
# Вывод: [['a'], ['b'], ['c']]
#собес_academy
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
✏️ Вопрос с реального собеседования по Python
Списки или массивы в Python — в чем разница
Используйте списки для работы с разными типами и динамическими структурами, массивы — для численных вычислений и ML
⭐ Гибкость: в списках можно хранить разные типы данных, массивы (из NumPy) требуют однородных элементов.
⭐ Операции: арифметика в списках — это манипуляция элементами (например, конкатенация), а в массивах — математические вычисления, как в линейной алгебре.
⭐ Эффективность: массивы занимают меньше памяти и работают быстрее, особенно на больших объемах данных.
#собес_academy
Списки или массивы в Python — в чем разница
Используйте списки для работы с разными типами и динамическими структурами, массивы — для численных вычислений и ML
#собес_academy
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
✏️ Вопрос с реального собеседования по Python
Как объединить два массива в NumPy
Частая ошибка — путать массивы и списки. NumPy — библиотека для работы с массивами, и здесь всё основано на линейной алгебре. Чтобы объединить два массива, используем специальную функцию:
Самая база для новичков👀
#собес_academy
Как объединить два массива в NumPy
Частая ошибка — путать массивы и списки. NumPy — библиотека для работы с массивами, и здесь всё основано на линейной алгебре. Чтобы объединить два массива, используем специальную функцию:
import numpy as np
arr1 = np.array([10, 20, 30])
arr2 = np.array([40, 50, 60])
result = np.concatenate((arr1, arr2))
print(result)
#=> [10 20 30 40 50 60]
Самая база для новичков
#собес_academy
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2