Python Flashcards

1
Q

Основные фичи питона?

A
  • это интерпретируемый язык
  • в нем динамическая типизация данных
  • это объектно-ориентированный язык
  • он лаконичный и внешне простой
  • распространяется бесплатно
  • у него большое сообщество
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

В чем разница между списками list и кортежами tuple?

A

Основная разница в том, что список может изменяться (mutable), а кортеж не может (immutable).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Как в питоне работает тернарный оператор?

A

Это обычные if который мы записываем в одну строку, для лаконичности и хорошей читабельности.
Выражение выглядит так:
[если верно] if [выражение] else [если неверно]
»> a, b = 2, 3
»> min = a if a < b else b
»> min
2
»> print(“Hi”) if a < b else print(“Bye”)
Hi

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Что такое отрицательный индекс negative index?

A

> > > mylist = [0, 1, 2, 3, 4, 5 ,6, 7, 8]
В отличие от положительного индекса отрицательный начинает поиск с конца:
mylist[-3]
6
Еще это помогает при создании срезов с конца:
mylist[-6:-1]
[3, 4, 5, 6, 7]

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Питон чувствителен к регистру?

A

Да
»> myname=”Ayushi”
»> Myname
Traceback (most recent call last):
File “<pyshell#3>”, line 1, in
Myname
NameError: name “Myname” is not defined

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Предельно допустимая длина идентификатора в питоне?

A

В питоне идентификатор может быть любой длины. Помимо этого есть несколько правил для присвоения имен:
- первым символом может быть нижнее подчеркивание (), символы A-Z или a-z;
- остальная часть имени может состоять из символов A-Z/a-z/
/0-9;
- не забываем, что питон чувствителен к регистру;
- в качестве имени нельзя использовать ключевые слова (keywords):
and, def, False, import, not, True, as, del, finally, in, or, try, assert, elif, for, is, pass, while, break, else, from, lambda, print, with, class, except, global, None, raise, yield, continue, exec, if, nonlocal, return.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Как можно преобразовать строку в нижний регистр?

A

Для этого используется метод lower():
»> “AyuShi”.lower()
“ayushi”
Для преобразования в верхний регистр (uppercase) используется метод upper():
»> “AyuShi”.upper()
“AYUSHI”
Еще есть методы isupper() (все символы в верхнем регистре) и islower() (все символы в нижнем регистре), которые проверяют регистр всех символов имени.
»> “AyuShi”.isupper()
False
»> “AYUSHI”.isupper()
True
»> “ayushi”.islower()
True
»> “@yu$hi”.islower()
True
»> “@YU$HI”.isupper()
True
Как видим, символы наподобие @ и $ применимы в обоих случаях.
Еще есть метод istitle(), который проверяет строку на стиль заголовка (все слова должны начинаться с символа в верхнем регистре):
»> “The Corpse Bride”.istitle()
True

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Для чего нужен pass (pass statement) в питоне?

A

Иногда нужно, чтобы код не давал никакого результата и не показывал ошибку, например, если еще не готово, но нужно иметь синтаксический корректный код. Можно поставить pass:
»> def func(*args):
pass

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Расскажите про функции help() и dir() в питоне.

A

Функция help() показывает строку документации и справку для ее аргумента:
»> import copy
»> help(copy.copy)
Help on function copy in module copy: # справка по функции copy в модуле copy:
copy(x)
Shallow copy operation on arbitrary Python objects. # операция поверхностного копирования для выбранного объекта питона.
See the module”s __doc__ string for more info. № # дополнительную информацию см. в строке __doc__ этого модуля.
Функция dir() возвращает список, содержащий пространство имен в объекте:
»> dir(copy.copy)
[“__annotations__”, “__call__”, “__class__”, “__closure__”, “__code__”, “__defaults__”, “__delattr__”, “__dict__”, “__dir__”, “__doc__”, “__eq__”, “__format__”, “__ge__”, “__get__”, “__getattribute__”, “__globals__”, “__gt__”, “__hash__”, “__init__”, “__init_subclass__”, “__kwdefaults__”, “__le__”, “__lt__”, “__module__”, “__name__”, “__ne__”, “__new__”, “__qualname__”, “__reduce__”, “__reduce_ex__”, “__repr__”, “__setattr__”, “__sizeof__”, “__str__”, “__subclasshook__”]

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Как получить список из всех ключей словаря (dictionary keys)?

A

Данная задача выполняется с помощью функции keys():
»> mydict={“a”:1,”b”:2,”c”:3,”e”:5}
»> mydict.keys()
dict_keys([“a”, “b”, “c”, “e”])

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Что такое срез?

A

Срез — это методика, которая позволяет получить часть списка, кортежа или строки.
»> (1, 2, 3, 4, 5)[2:4]
(3, 4)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Как пишутся комментарии в питоне?

A

Для этого используется символ #. Все, что написано на строке после него, считается комментарием и игнорируется.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Как проверить, что все символы строки относятся к алфавитно-цифровым?

A

Для этого используется метод isalnum().

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Как перевести первый символ строки в верхний регистр?

A

Для этого есть метод capitalize():
»> “ayushi”.capitalize()
“Ayushi”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Все знают, что сегодня питон в моде. Но истинное принятие новой технологии подразумевает понимание ее недостатков. Что вы можете сказать по этому поводу?

A
  • интерпретируемая природа питона снижает скорость исполнения программы
  • его не выгодно использовать для мобильных устройств и браузеров
  • будучи языком с динамической типизацией данных, он использует утиную типизацию; в связи с этим появляются ошибки исполнения (runtime errors);
  • в нем слабо развиты возможности доступа к базам данных; поэтому питон не идеальный вариант для приложений с очень большими базами данных;
  • низкие требования на входе, то есть свои силы в питоне может попробовать каждый; это иногда снижает качество кода;
  • у питона индивидуально выраженный стиль.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Как в питоне узнать, в какой мы сейчас директории?

A

Для этого используется функция getcwd(). Она импортируется из модуля os:
»> import os
»> os.getcwd()
“C:\Users\lifei\AppData\Local\Programs\Python\Python36-32”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Как можно обратить (reverse) порядок элементов в списке?

A

Для этого есть метод reverse():
»> a.reverse()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Что такое приглашение интерпретатора (interpreter prompt)?

A

> > >

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Что нужно сделать, чтобы функция возвратила значение?

A

Для этого используется ключевое слово return

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Что такое блок?

A

Когда мы пишем предложение (statement), нам нужно завершить первую строку двоеточием, а под ним написать блок кода, который исполняется в рамках этого предложения. Каждая строка блока пишется с одинаковым отступом.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Зачем нужны break и continue?

A

Они используются для управления последовательностью операций: break останавливает исполнение цикла и переводит исполнение на следующий блок кода, continue как бы перепрыгивает на следующую итерацию цикла и не прекращает его исполнение.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Если мы не поставим двоеточие в конце строки для цикла “do-while”, он все равно сработает?

A

В питоне такой цикл не реализован. Это вопрос из тех, которые с подвохом, когда упоминают элементы других языков.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Напишите в одну строку, как можно получить самую позднюю по значению букву в строке.

A

Значение буквы определяется по ее коду в ASCII. Для этого подойдет функция max():
»> max(“flyiNg”)
“y”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

В каких областях питон имеет преимущество?

A

Лучше всего питон использовать в следующих областях:
- веб-приложения
- графические интерфейсы пользователя для настольных ПК
- научные и арифметические приложения
- разработка ПО
- разработка программ обучения
- приложения для бизнеса
- сетевые приложения
- игры, 3D-графика

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

Можете назвать десять встроенных функций питона?

A

Функция hash() возвращает хэш-значение объекта:
Функция input() читает ввод и возвращает строку:
Функция len() возвращает число, показывающее длину строки:

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

Как конвертировать список в строку?

A

Для этого подойдет метод join():
»> nums=[“one”,”two”,”three”,”four”,”five”,”six”,”seven”]
»> s=” “.join(nums)
»> s
“one two three four five six seven”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

Как убрать из списка дубликат элемента?

A

Для этого можно конвертировать список во множество (set):
»> list = [1, 2, 1, 3, 4, 2]
»> set(list)
{1, 2, 3, 4}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

Что такое словарь (dictionary)?

A
  1. Словари используются для хранения значений данных в парах ключ:значение.
  2. Словарь относится к изменяемым (mutable) объектам. Его можно создать помощью:
    - литерала (символов {})
    - функции dict()
    - генератора (comprehension)
  3. Словарь представляет собой упорядоченный*(>3.7) набор данных, изменяемый и не допускающий дублирования(ключей).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

Расскажите про арифметические операторы //, %, и **.

A

Оператор // выполняет целочисленное деление и возвращает целую часть числа, полученного в результате операции:
»> 7 // 2
3
Оператор ** возводит в степень:
»> 2**10
1024
Оператор % возвращает результат деления по модулю, то есть остаток после деления:
»> 13%7
6

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q

Что вам известно про операторы сравнения в питоне?

A

Оператор “меньше” (<)
Оператор “больше” (>)
Оператор “меньше или равно” (<=)
Оператор “больше или равно” (>=)
Оператор равенства (==)
Оператор неравенства (!=)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
31
Q

Что такое операторы присвоения в питоне?

A

Все арифметические операторы можно комбинировать с символом присвоения.
+=
-=
*=
/=
// =
%=

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
32
Q

Расскажите про логические операторы в питоне.

A

Всего их три: and, or, not.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
33
Q

Что такое оператор принадлежности?

A

Это операторы in и not in. Они показывают, является ли одно значение частью другого.
»> “me” in “disappointment”
True
»> “us” not in “disappointment”
True

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
34
Q

Чем отличаются операторы == от is ?

A

== сравнивает два операнда по значению
is сравнивает по их адресам в памяти

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
35
Q

Какие типы данных поддерживаются в питоне?

A

Text Type: str
Numeric Types: int, float, complex
Sequence Types: list, tuple, range
Mapping Type: dict
Set Types: set, frozenset
Boolean Type: bool
Binary Types: bytes, bytearray, memoryview
None Type: NoneType

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
36
Q

Что такое строка документации (docstring)?

A

Она вносится первой строкой в блок, определяющий содержание функции, класса или метода. Содержит описание их цели и способа исполнения. Обозначается тремя одинарными или двойными кавычками с каждой стороны.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
37
Q

Как можно конвертировать строку в число?

A

Если строка содержит только числовые символы, можно использовать функцию int():
»> int(“227”)
227

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
38
Q

Как можно принять результат ввода на клавиатуре?

A

Если пользователь что-то вводит с помощью клавиатуры, можно использовать функцию input()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
39
Q

Что такое функция?

A

Функция — это блок кода, который запускается только при вызове.
Вы можете передавать данные, известные как параметры, в функцию.
В результате функция может возвращать данные.
В Python функция определяется с помощью ключевого слова def
Чтобы вызвать функцию, используйте имя функции, за которым следуют круглые скобки
С точки зрения функции:
Параметр — это переменная, указанная в скобках в определении функции.
Аргумент — это значение, которое передается функции при ее вызове.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
40
Q

Что такое рекурсия?

A

Это когда функция вызывает саму себя. При этом она должна иметь базовое условие, чтобы не создать бесконечный цикл:
»> def facto(n):
if n == 1: return 1
return n * facto(n - 1)
»> facto(4)
24

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
41
Q

Что делает функция zip()?

A

Возвращает итератор с кортежами:
»> list(zip([“a”, “b”, “c”],[1, 2, 3]))
[(“a”, 1), (“b”, 2), (“c”, 3)]
В данном случае она совмещает элементы двух списков и создает из них кортежи. Работает не только со списками.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
42
Q

Как посчитать длину строки (string)?

A

Для этого вызываем функцию len():
»> len(“Ayushi Sharma”)
13
Функция len()возвращает количество элементов в объекте.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
43
Q

Расскажите про генераторы списков (list comprehension).

A

Они позволяют создавать списки с помощью одной строки кода:
»> [i for i in range(1, 11, 2)]
[1, 3, 5, 7, 9]
fruits = [“apple”, “banana”, “cherry”, “kiwi”, “mango”]
newlist = [x for x in fruits if “a” in x]
print(newlist)

44
Q

Как можно получить все значения из словаря?

A

Для этого используется метод values()
»> a = {“a”:1,”b”:2,”c”:3,”d”:4}
»> a.values
dict_values([1, 2, 3, 4])

45
Q

Как можно переключить регистр строки?

A

Можно использовать метод swapcase(), предусмотренный для класса str:
»> “AyuShi”.swapcase()
“aYUsHI”

46
Q

Возьмем строку “I love Python”. Напишите код, который выведет символы до буквы “t”.

A

> > > s = “I love Python”
i = 0
while s[i] != “t”:
print(s[i], end=””)
i += 1
I love Py

mylist = ‘I love Python’
for i in mylist:
if i != ‘t’:
print(i, end=’’)
else:
break

47
Q

Возьмем строку “I love Python”. Напишите код, который выведет эту строку без пробелов.

A

> > > s = “I love Python”
for i in s:
if i == ‘ ‘: continue
print(i, end=’’)
IlovePython

48
Q

Возьмем строку “I love Python”. Напишите код, который выведет эту строку пять раз подряд.

A

> > > s = “I love Python”
for i in range(6):
print(s)
I love Python
I love Python
I love Python
I love Python
I love Python

49
Q

Создайте новый лист с помощью конвертации списка числовых строк в список чисел.

A

> > > nums = [‘22’, ’68’, ’110’, ’89’, ’31’, ’12’]
Теперь возьмем функцию int() и создадим генератор списка, который конвертирует строки в числа и внесет их в список:
[int(i) for i in nums]
[22, 68, 110, 89, 31, 12]

50
Q

Какой результат выводит данный код
»> def extendList(val, list=[]):
list.append(val)
return list
»> list1 = extendList(10)
»> list2 = extendList(123,[])
»> list3 = extendList(‘a’)
»> list1, list2, list3

A
def extendList(val, list=[]):
    list.append(val)
    return list
list1 = extendList(10)
list2 = extendList(123,[])
list3 = extendList('a')
list1, list2, list3
[10, ‘a’], [123], [10, ‘a’]

Возможный, но неверный ответ: ([10], [123], [‘a’])

В функции есть аргумент list=[], который не запускается в нулевом значении при каждом вызове этой функции. Когда мы первый раз определяем функцию, она создает новый список. Затем, каждый раз, когда мы вызываем данную функцию без аргумента-списка, она использует один и тот же список. Питон исполняет выражения, которые имеют нулевые значения, при определении функции, а не при вызове функции.

51
Q

Сколько аргументов может принять range()?

A

Функция range()возвращает последовательность чисел, начиная с 0 по умолчанию и увеличиваясь на 1 (по умолчанию), и останавливается перед указанным числом.
От одного до трех
range(start, stop, step)

52
Q

Что такое РЕР8?

A

Это соглашение о программировании в питоне, которое содержит рекомендации для повышения читаемости кода.

53
Q

Чем Python отличается от Java?

A

Если сравнивать Python и Java:
- Java быстрее
- Python использует отступы, а Java нужны скобки
- в Python динамическая типизация, а в Java — статическая
- Python — простой и лаконичный, а Java — многословный язык
- Python — интерпретируемый язык
- Java не зависит от используемой платформы
- в Java есть интерфейс JDBC, который улучшает доступ к базам данных

54
Q

Как лучше всего поменять местами числовые значения объектов?

A

> > > a, b = b, a

Как выполняется этот код:

> > > a, b = 2, 3
a, b = b, a
a, b
(3, 2)

55
Q

Как можно выполнить несколько операций присвоения в одном предложении?

A

Первый способ (несколько объектов с уникальными значениями):
»> a, b, c = 3, 4, 5

Второй способ (несколько объектов с идентичными значениями):
»> a = b = c = 3

56
Q

Как выйти из бесконечного цикла?

A

Можно нажать комбинацию клавиш Ctrl+C, которая прерывает исполнение.

57
Q

Как исполняется код в питоне?

A

Файлы питона сначала компилируются в байткод, который затем исполняется.

58
Q

Что такое with в питоне?

A

Менеджер контекста позволяющий автоматически закрывать файл

59
Q

Чем файл .pyc отличается от .py

A

Оба файла содержат байткод, но .pyc является компилированной версией файла питона. Его байткод не зависит от платформы, поэтому он исполняется на всех платформах, которые поддерживают формат .pyc.

60
Q

Что делает питон объектно-ориентированным?

A

Он следует парадигме объектно-ориентированного программирования, которая построена вокруг классов (classes) и их экземпляров (instances). Это позволяет реализовать следующие функции:
- сокрытие внутренней структуры данных
- абстракция
- наследование
- полиморфизм (способность выбирать правильный метод в зависимости от типа данных)
- ограничение доступа к данным

61
Q

Какие есть типы объектов в питоне?

A

В питоне поддерживаются изменяемые (mutable) и не изменяемые (immutable) типы объектов.

Не изменяемые не позволяют изменять свое содержание. Примеры: кортежи, булевы, строки, числа. Итерация по ним выполняется быстрее.

Изменяемые позволяют изменять свое содержание. Примеры: списки, множества и словари. Итерация по ним выполняется медленнее.

62
Q

Когда в блоке try-except исполняется элемент else?

A

В блоке if-else элемент else исполняется в случае, если условие в операторе if (if statement) является неверным (False). А вот в блоке try-except элемент else исполняется только в случае, если элемент try не выдает исключение.
try:
print(x)
except:
print(“Something went wrong”)
else:
print(‘gggggg’)
finally:
print(“The ‘try except’ is finished”)

63
Q

Допустим, есть список nums=[0,1,2,3,4]. Что означает nums[-1]?

A

Данный код не будет выдавать исключение. nums[-1] — это 4, потому что движение по элементам начинается справа.

64
Q

Что такое переменная PYTHONPATH?

A

PYTHONPATH — эта переменная сообщает интерпретатору путь до файлов модуля, импортированных в программу. Поэтому она должна включать в себя директорию с библиотекой-источником питона и директории с исходным кодом питона. Переменную PYTHONPATH можно назначить самостоятельно, однако обычно ее предустанавливает установщик питона.

65
Q

Расскажите про функции join() и split() в Python.

A

Метод join()берет все элементы в итерируемом объекте и объединяет их в одну строку.
В качестве разделителя должна быть указана строка.
»> ‘,’.join(‘12345’)
‘1,2,3,4,5’

Метод split()разбивает строку на список.
Вы можете указать разделитель, по умолчанию разделителем является любой пробел.
»> ‘1,2,3,4,5’.split(‘,’)
[‘1’, ‘2’, ‘3’, ‘4’, ‘5’]

66
Q

Расскажите, какая будет выдача у этого кода:
x=[‘ab’,’cd’]
print(len(map(list,x)))

A

Здесь будет ошибка определения типа (TypeError). Ее причиной является отсутствие атрибута len() у функции map(). Это можно проверить функцией dir().

x=[‘ab’,’cd’]
def func(n):
return len(n)
a = map(func, x)
print(list(a))

67
Q

Функция dir()

A

Функция dir()возвращает все свойства и методы указанного объекта без значений.

Эта функция вернет все свойства и методы, даже встроенные свойства, которые используются по умолчанию для всех объектов

68
Q

Функция map()

A

Встроенная функция map(function, iterable) применяет функцию function ко всем элементам итерируемого объекта iterable.
Как результат функция map() возвращает объект типа map. Этот объект — последовательность, элементы которой — результат применения function к элементам iterable. Объект map можно преобразовать, например, в список или иную коллекцию.
def myfunc(n):
return len(n)

x = map(myfunc, (‘apple’, ‘banana’, ‘cherry’))
print(list(x))

69
Q

Утиная типизация
Крякает с крыльями - значит утка

A

Утиная типизация – это концепция, характерная для языков
программирования с динамической типизацией, согласно которой
конкретный тип или класс объекта не важен, а важны лишь свойства и
методы, которыми этот объект обладает. Другими словами, при работе с
объектом его тип не проверяется, вместо этого проверяются свойства и
методы этого объекта. Такой подход добавляет гибкости коду, позволяет
полиморфно работать с объектами, которые никак не связаны друг с
другом и могут быть объектами разных классов. Единственное условие,
чтобы все эти объекты поддерживали необходимый набор свойств и
методов.

> > > class Meter:
… def __len__(self):
… return 1_000

len([1, 2, 3])
3
len(“Duck typing…”)
14
len(Meter())
1000

В примере выше функции len не важен тип аргумента, а важно лишь то,
что у объекта можно вызвать метод __len__().

70
Q

Инкапсуляция - в объектно-ориентированном программировании

A

Инкапсуляция - в объектно-ориентированном программировании - сокрытие внутренней структуры данных и реализации методов объекта от остальной программы. Другим объектам доступен только интерфейс объекта, через который осуществляется все взаимодействие с ним.

71
Q

Полиморфизм

A

Полиморфизм — очень важная идея в программировании. Это возможность работы с совершенно разными объектами (языка Питон) единым образом.

72
Q

Декораторы

A

декораторы — это паттерн проектирования. По сути, просто своеобразные «обёртки», которые дают нам возможность делать что-либо до и после того, что сделает декорируемая функция, не изменяя её.

73
Q

Можно ли изменить отдельный символ внутри строки?

A

Нет, строки неизменяемы. Операции замены, форматирования и конкатенации возвращают новую строку.

74
Q

Что может являться ключом словаря? Что не может? Почему?

A

Ключом словаря может быть любой неизменяемый объект: число, строка, datetime, функция и даже модуль. Такие объекты имеют метод __hash__(), который однозначно сопоставляет объект с некоторым числом. По этому числу словарь ищет значение для ключа.

Списки, словари и множества изменяемы и не имеют метода хеширования. При подстановке их в словарь возникнет ошибка.

75
Q

Есть два списка – ключи и значения. Как составить из них словарь?

A

keys = [‘foo’, ‘bar’, ‘baz’]
vals = [1, 2, 3]
dict(zip(keys, vals))
»> {‘baz’: 3, ‘foo’: 1, ‘bar’: 2}

Функция zip отдает список пар N-ых элементов. Конструктор dict принимает список пар. Каждую пару он рассматривает как ключ и значение соответственно.

76
Q

Где быстрее поиск элемента -— в списке или множестве?

A

Во множестве, потому что множество работает как словарь. Значение ищется по хешу ключа. Вычисление хеша и сопоставление адреса – операции постоянной сложности, поэтому принято говорить, что поиск в словаре равен O(1).

Исключение работает только для очень маленьких списков длиной до 5 элементов. В этом случае интерпретатору будет быстрей пробежаться по списку, чем считать хеш.

77
Q

Ключевое слова del()

A

Ключевое слово del используется для удаления объектов. В Python все является объектом, поэтому ключевое слово del также может использоваться для удаления переменных, списков или частей списка и т. д.

del MyClass

Удалить переменную:
x = “hello”
del x

Удалить первый элемент в списке:
x = [“apple”, “banana”, “cherry”]
del x[0]

78
Q

Функция open()

A

Функция open() принимает два параметра; имя файла и режим .
Ключевая функция для работы с файлами

f = open(“demofile.txt”)
f = open(“demofile.txt”, ‘rt’)
Поскольку “r”для чтения и “t”для текста используются значения по умолчанию, указывать их не нужно.

79
Q

Существует четыре различных метода (режима) открытия файла:

A

“r”- Чтение - Значение по умолчанию. Открывает файл для чтения, ошибка, если файл не существует
“a”- Append - открывает файл для добавления, создает файл, если он не существует
“w”- Write - открывает файл для записи, создает файл, если он не существует
“x”- Create - Создает указанный файл, возвращает ошибку, если файл существует

Кроме того, вы можете указать, следует ли обрабатывать файл в двоичном или текстовом режиме.
“t”- Текст - значение по умолчанию. Текстовый режим
“b”- Двоичный - Двоичный режим (например, изображения)

80
Q

Что такое *args, **kwargs, в каких случаях они требуются?

A

Этот синтаксис означает, что функция готова принять любое количество позиционных (*args от arguments) и именованных (**kwargs от keyword arguments) аргументов.
С переменной *args можно работать как с кортежем, а с переменной **kwargs — как со словарём.

81
Q

Оператор «звёздочка»

A

Этот оператор позволяет «распаковывать» объекты, внутри которых хранятся некие элементы. Вот пример:

a = [1,2,3]
b = [*a,4,5,6]
print(b) # [1,2,3,4,5,6]

Тут берётся содержимое списка a, распаковывается, и помещается в список b.

82
Q

Как в питоне реализованы public, private, protected методы?

A

Модификаторы доступа

83
Q

Что такое lambda функция?

A

Небольшая анонимная функция. Может принимать любое количество аргументов, но имеет только одно выражение.

84
Q

Область видимости переменных

A

Область видимости или scope определяет контекст переменной, в рамках которого ее можно использовать. В Python есть два типа контекста: глобальный и локальный.

85
Q

Область видимости переменных
Глобальный контекст

A

Глобальный контекст подразумевает, что переменная является глобальной, она определена вне любой из функций и доступна любой функции в программе. Например:

name = “Tom”

def say_hi():
print(“Hello”, name)

def say_bye():
print(“Good bye”, name)

say_hi()
say_bye()

86
Q

Область видимости переменных
Локальный контекст

A

В отличие от глобальных переменных локальная переменная определяется внутри функции и доступна только из этой функции, то есть имеет локальную область видимости:

87
Q

Множество(set)

A

Множество(set) - это неупорядоченная коллекция данных, состоящая из уникальных значений.

88
Q

Абстрактные методы

A

Методы которые обязательно нужно переопределять в дочерних классах и которые не имеют своей собственной реализации называются абстрактными

89
Q

Пример полиморфизма и абстрактного метода

A

class Geom:
def get_pr(self):
raise NotImplementedError(“В дочернем классе надо переопределить метод get_pr”)

class Rectangle(Geom):
def __init__(self, w, h):
self.w = w
self.h = h

def get_pr(self):
    return 2*(self.w + self.h)

class Square(Geom):
def __init__(self, a):
self.a = a

def get_pr(self):
    return 4*self.a

class Triangle(Geom):
def __init__(self, a, b, c):
self.a = a
self.b = b
self.c = c

def get_pr(self):
    return self.a + self.b + self.c

geom = [Rectangle(1, 2),
Square(10),
Triangle(4, 4, 5)
]

for g in geom:
print(g.get_pr())

90
Q

Принципы SOLID
Single Responsibility Principle(принцип единственной ответственности)

A

Это о том что каждый класс при разработке того или иного проекта должен выполнять строго обозначенную функцию, т.е. ограничен только своей задачей.

91
Q

Принципы SOLID
Open-Closed Principle(принцип открытости-закрытости)

A

Этот принцип предполагает что эти классы должны быть закрыты для модификаций, но открыты для расширений

92
Q

Принципы SOLID
Liskov Substitution Principle(принцип подстановки БарбарыЛисков)

A

Подклассы должны заменять свои базовые классы, буквально следующее - если у нас есть какой-то дочерний класс, то он должен полностью повторять функционал своего базового класса.

93
Q

Принципы SOLID
Interface Segregation Principle(принцип разделения интерфейса)

A

Нужно создавать узко-специализированные интерфейсы, предназначенные для конкретного клиента.

94
Q

Принципы SOLID
Dependency Inversion Principle(принцип инверсии зависимостей)

A

Наши классы должны зависить от интерфейсов или абстракных классов, а не от конкретных классов и функций.

95
Q

Замыкание (closure)

A

В контексте функции hello() значением passed_variable будет строка ‘Привет’

Замыкание (closure) — это способность вложенной функции запоминать локальное состояние контекстной области объемлющей функции.

def some_func(passed_variable):
    def inside_func(passed_inside_variable):
        return f'{passed_variable}, {passed_inside_variable}'
    return inside_func

Создали функцию hello()
hello = some_func(‘Привет’)

Вызываем hello() с параметром для inside_func()
print(hello(‘Стёпа’))
# Будет напечатано: Привет, мИША

96
Q

Регулярные выражения (англ. regular expressions или regExp)

A

Регулярные выражения (англ. regular expressions или regExp) — это самостоятельный язык, предназначенный для поиска строк и проверки их на соответствие какому-то шаблону.

97
Q

Как в Python передаются аргументы в функцию?

A

Аргументы в функцию передаются либо по значениям, либо по ссылкам. Неизменяемые типы данных передаются по значениям, изменяемые работают по ссылкам.

98
Q

Что такое аннотация типов, зачем они нужны, когда выполняются?

A

Это подсказки говорящие о том какой тип данных ожидается, от того или иного объекта. Они не выполняются в рантайме. Хотя современные IDE подсветят если тип отличается от ожидаемого

99
Q

Что такое глубокая и поверхностная копии? Зачем нужны? Как сделать?

A
import copy

some_list = [1, [2], 3]

print(some_list is copy.deepcopy(some_list))
print(some_list[1] is copy.deepcopy(some_list)[1])
print(some_list is copy.copy(some_list))
print(some_list[1] is copy.copy(some_list)[1])

False
False
False
True

copy копирует внешний объект, внутренние оставляя теми же
deepcopy копирует все, касается изменяемых типов данных

100
Q

Что такое виртуальное окружение?

A

Это такая песочница, которая обособляет Питон, часть библиотек стандартных и позволяет работать нам в этой песочницене не засоряя глобальный Питон

101
Q

Массивы Python

A

Массив — это специальная переменная, которая может содержать более одного значения одновременно.
Python не имеет встроенной поддержки массивов, но вместо этого можно использовать списки Python (list)
* append() Adds an element at the end of the list
* clear() Removes all the elements from the list
* copy() Returns a copy of the list
* count() Returns the number of elements with the specified value
* extend() Add the elements of a list (or any iterable), to the end of the current list
* index() Returns the index of the first element with the specified value
* insert() Adds an element at the specified position
* pop() Removes the element at the specified position
* remove() Removes the first item with the specified value
* reverse() Reverses the order of the list
* sort() Sorts the list

102
Q

Алгоритм

A

Алгоритм — это инструкция, которая описывает порядок выполнения действий.

103
Q

Массив

A

Массив — это набор однотипных данных, расположенных в памяти друг за другом. Поэтому он всегда занимает один непрерывный участок памяти.

104
Q

Реаллокация

A

Как правило, при расширении массива программе приходится произвести «реаллокацию» — выделить новый участок памяти и скопировать туда старое содержимое.

105
Q

Связный список

A

В связном списке у каждого элемента, помимо его значения, есть ссылка на следующий элемент списка. За исключением последнего — он ссылается в никуда.

class Node:
def __init__(self, value=None, next=None):
self.value = value
self.next = next

def print_linked_list(vertex):
while vertex:
print(vertex.value, end=” -> “)
vertex = vertex.next
print(“None”)