🐍 15 самых часто задаваемых вопросов на собеседовании про Python
Разбор 15 самых часто задаваемых вопросов для начинающих, а также для продвинутых Python-разработчиков. PEP – расшифровывается как Python Enhancement Proposal. Это официальный проектный документ, предоставляющий информацию сообществу Python и описывающий новую функцию для Python или его процессов. PEP 8 важен, так как документирует руководящие принципы стиля для кода Python. То есть, для написания кода ввели определенные правила, которым рекомендуется следовать. Объект в Python функционирует в пределах области видимости. Область видимости – это блок кода, в котором объект в Python остается актуальным. Пространства имен уникально идентифицируют все объекты внутри программы. Однако эти пространства имен также имеют определенную для них область видимости, где можно использовать их объекты без префикса. Ниже приведено несколько примеров областей видимости, создаваемых во время выполнения кода в Python: 🐍 Самоучитель для начинающих: как освоить Python с нуля за 30 минут? List и Tuples – это типы данных, которые хранят коллекцию объектов в Python. Объекты, хранящиеся в обеих последовательностях, имеют разные типы данных. List представлены квадратными скобками Пример использования: Пример использования list и tuples в Python Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека питониста» Интересно, перейти к каналу Pass – представляет собой нулевую операцию в Python. Обычно она используется для заполнения пустых блоков кода, который может выполняться во время исполнения. В примере, приведенном ниже, без оператора Пример использования pass в Python ⛱️ Как правильно ничего не делать в Python: инструкция pass Модули – это файлы Python с расширением Пакеты позволяют иерархически структурировать пространство имен модуля с помощью точечной нотации. Как модули помогают избежать столкновений между именами глобальных переменных, так и пакеты помогают избежать столкновений между именами модулей. Создать пакет просто, поскольку он использует присущую системе файловую структуру. Пакет создается как папка в файловой системе и помещается необходимый модуль (файл python). Импорт модуля или его содержимого из пакета требует, чтобы имя пакета был префиксом к имени модуля, соединенным точкой. Подробнее на здесь. пример импортирования пакета и модуля в Python Пакеты и модули – это два механизма, позволяющие осуществлять модульное программирование в Python. Модульное программирование имеет несколько преимуществ: Массивы содержат только элементы одинаковых типов данных, то есть тип данных массива должен быть однородным. Массивы потребляют меньше памяти. Списки содержат элементы разных типов данных, то есть тип данных списков может быть неоднородным. Их недостатком является потребление большого объема памяти. Пример использования массива и списка: Пример использования array и list в Python Отрицательное значение индексов в Python является популярным использованием slicing (вырезок) коллекций и массивов. То есть индексацией можно пользоваться для создания вырезок из коллекций. Синтаксис – Пример использования slicing в Python В Python оператор присваивания ( Пример использования Пример использования copy и deepcopy в Python Перегрузка оператора – это возможность переопределять различные операторы в классах, то есть менять операции, которые они выполняют, в зависимости от контекста. В Python есть операторы такие как: сложение, вычитание и т. д., которые можно перегрузить для класса. Пример использования: Пример использования перегрузки оператора в Python В примере показано использование перезагрузки операторов. Данные методы не вызываются напрямую, но вызываются встроенными функциями или операторами. В Python аргументы передаются по ссылке, т. е. передается ссылка на реальный объект. Но есть два вида передачи объекта в аргументах. По значению: Передается копия реального объекта. Изменение значения копии объекта не приведет к изменению значения исходного объекта. По ссылке: Передается ссылка на реальный объект. Изменение значения нового объекта изменит значение исходного объекта. Пример использования: Пример использования передачи аргументов в Python Пример использования: Пример использования *args в Python Пример использования: Пример использования **kwargs в Python Пустой класс – класс, который не имеет реализацию каких-то методов или же свойств. При пустом классе используется ключевое слово pass для того, чтобы не выдавало ошибок. Пример использования: Пример использования пустого класса в Python Python не использует спецификаторы доступа, такие как Пример использования: Пример использования спецификаторы доступов в Python Реализация алгоритма на Python Реализация алгоритма на Python *** 1. Что такое PEP 8?
2. Scope в Python – какие бывают?
3. List и Tuples – зачем нужны и какие отличия?
['sara', 6, 0.19]
, а tuples – круглыми скобками ('max', 5, 0.97)
. Ключевое различие между ними заключается в том, что в то время как list является изменяемым, tuples, напротив, является неизменяемым объектом. Это означает, что данные в list могут быть изменены, добавлены или нарезаны на ходу, а в tuples остаются неизменными и не могут быть изменены никаким образом.
tuple_example = ('max', 6, 5, 0.97) list_example = ['max', 6, 5, 0.97] print(tuple_example [0]) # вывод => 'max' print(list_example [0]) # вывод => 'max' tuple_example [0] = 'andrey' # изменение tuple => тут вызвется ошибка list_example [0] = 'andrey' # изменение list => list modified print(tuple_example [0]) # вывод => 'max' print(list_example [0]) # вывод => 'andrey'
4. Что такое pass в Python?
pass
можно столкнуться с ошибкой как <<IndentationError>>
во время выполнения кода.
def myEmptyFunc(): #функция ничего не делает pass myEmptyFunc() # если же убрать pass будет вот такая ошибка # File "<stdin>", line 3 # IndentationError: expected an indented block
5. Что такое модули и пакеты в Python?
<<.py>>
, в которых определены и реализованы наборы функций, классов или переменных. Они могут быть импортированы и инициализированы один раз с помощью оператора import
. Если требуется частичная функциональность, необходимые классы или функции импортируются с помощью оператора from foo import bar
.
from myclass import MyClass from foo.bar.yourclass import YourClass
6. Какие отличия между массивом и списком в Python?
import array array_example = array.array('i', [1, 2, 3]) for i in array_example: print(i, end=' ') #вывод: 1 2 3 array_example = array.array('i', [1, 2, 'string']) #вывод: TypeError: an integer is required (got type str) list_example = [1, 2, 'string'] for i in list_example: print(i, end=' ') #вывод: 1 2 string
7. Отрицательное значение индексов в Python
[start : stop : step]
:start
– с какого индекса нужно начинать (может быть отрицательным)stop
– на каком месте остановитсяstep
– количество шагов для перехода. По умолчанию 1
.
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] print(numbers[1::2]) print(numbers[-1::2]) #начнет с последнего значения. print(numbers[3:-2:2]) #начнет с индекса 3 и дойдет до 2 элемента, #то есть дойдет до последнего элемента и начнет сначало чтобы #дойти до индекса 2
8. Как управляется память в Python?
=
) не копирует объекты. Вместо этого он создает связь между существующим объектом и именем целевой переменной. Чтобы создать копии объекта в Python, необходимо использовать модуль copy
. Более того, существует два способа создания копий для данного объекта с помощью модуля copy
.сopy
и deepcopy
:
from copy import copy, deepcopy list_1 = [1, 2, [3, 5], 4] ## shallow copy list_2 = copy(list_1) list_2[3] = 7 list_2[2].append(6) list_2 # вывод => [1, 2, [3, 5, 6], 7] list_1 # вывод => [1, 2, [3, 5, 6], 4] ## deep copy list_3 = deepcopy(list_1) list_3[3] = 8 list_3[2].append(7) list_3 # вывод => [1, 2, [3, 5, 6, 7], 8] list_1 # вывод => [1, 2, [3, 5, 6], 4]
10. Как делается перегрузка операторов в Python?
class Vector: def __init__(self, x, y): self.x = x self.y = y def __add__(self, vector): return Vector(self.x + vector.x, self.y + vector.y) def __sub__(self, vector): return Vector(self.x - vector.x, self.y - vector.y) v1 = Vector(1,2) v2 = Vector(3,4) print(v1+v2) #вывод => Vector(4, 6) print(v1-v2) #вывод => Vector(-2, -2)
11. Как передаются аргументы – значения или ссылка?
def appendNumber(arr): arr.append(4) arr = [1, 2, 3] print(arr) #вывод: => [1, 2, 3] appendNumber(arr) print(arr) #вывод: => [1, 2, 3, 4]
12. Что такое *args и *kwargs?
*args
– это специальный синтаксис, используемый в определении функции для передачи аргументов переменной длины.*
– означает переменную длину, а args
– это название принятое в PEP 8, но можно использовать любое другое название
def multiply(a, b, *argv): mul = a * b for num in argv: mul *= num return mul print(multiply(1, 2, 3, 4, 5)) #вывод: 120
**kwargs
– это специальный синтаксис, используемый в определении функции для передачи аргументов переменной длины с ключевыми словами. На самом деле, это dictionary
который имеет key
и value
.
def tellArguments(**kwargs): for key, value in kwargs.items(): print(key + ": " + value) tellArguments(arg1 = "argument 1", arg2 = "argument 2", arg3 = "argument 3") #вывод: # arg1: argument 1 # arg2: argument 2 # arg3: argument 3
13. Пустой класс и как он используется?
class EmptyClassDemo: pass obj=EmptyClassDemo() obj.name="Proglib" print("Name of class = ",obj.name)
14. Используются ли в python спецификаторы доступа?
private
, public
, protected
и т. д. Однако, в нем есть концепция имитации поведения переменных путем использования одинарного (protected
) или двойного подчеркивания (private
) в качестве префикса к именам переменных. По умолчанию переменные без подчеркивания являются общедоступными.
class User: # protected - доступен только в классе или же те дочерним классам _emp_name = None _age = None # private - доступен только в самом классе __branch = None # конструктор def __init__(self, emp_name, age, branch): self._emp_name = emp_name self._age = age self.__branch = branch # публичный метод - общедоступный метод def display(): print(self._emp_name +" "+self._age+" "+self.__branch)
15. Написать алгоритм (несколько примеров)
from collections import Counter d1 = {'ключ1': 50, 'ключ2': 100, 'ключ3':200} d2 = {'ключ1': 200, 'ключ2': 100, 'ключ4':300} new_dict = Counter(d1) + Counter(d2) print(new_dict)
A
, суммарное значение которых равно заданному значению N
.
def print_pairs(arr, N): # hash set hash_set = set() for i in range(0, len(arr)): val = N-arr[i] if (val in hash_set): print("Пара: " + str(arr[i]) + ", " + str(val)) hash_set.add(arr[i]) arr = [1, 2, 40, 3, 9, 4] N = 3 print_pairs(arr, N)
Материалы по теме
- 2 views
- 0 Comment
Свежие комментарии