Что такое функция в Python? Каким ключевым словом она обозначается?
Это именованный блок кода, который выполняет одну задачу, может принимать аргументы и возвращать результат.
Функция обозначается ключевыми словом def.
Что такое декораторы и функции высшего порядка в Python?
Декоратор - это функция высшего порядка, которая нужна для того, чтобы расширить функционал функции не изменяя ее (функция-обертка). Является синтаксическим сахаром.
Функция высшего порядка - это функция, которая принимает в аргументы другую функцию, создает внутри себя функцию, вызывает и возвращает функцию.
Что такое локальльное, замкнутное, глобальное и встроенное пространство имен?
1. builtins(встроенное) - все, что встроено в оболочку питона (print, input, sum ...)
2. global(глобальное) - все переменные, функции и т.д. внутри файла
3. enclosed(замкнутное, нелокальное) - пространство, которое находится между двух других пространств (пр.: между global и local)
4. local(локальное) - может быть в некоторых моментах (функции, циклы)
Как создать новый ключ в словаре и присвоить ему значение?
1. название_словаря[новый_ключ] = значение
2. .setdefault(key, [defaultvalue]) -> работает как метод get, но если ключа нет, он создает пару с этим ключом и значение default_value
название_словаря.setdefault('ключ', 'значение')
Расскажите, как работает цикл while и цикл for?
for -> цикл, который работает только с итерируемыми объектами и заканчивает свою работу, когда дойдет до конца(пройдется по всем элементами).
while -> цикл, который работает до тех пор пока условие верно.
Какие виды аргументов может принимать функция? И определения аргументов.
Именнованый - по названию
Позиционный - по позиции
Можно ли применить несколько декораторов к одной и той же функции? И важен ли порядок их применения?
Можно. Порядок имеет значения. Декоратор, который находится ближе всех к функции отработает первым.
Что возвращает функция locals()?
Возвращает переменные, классы, функции и т.д из локального пространства в виде словаря.
Могут ли быть 2 одинаковых ключа в словаре и что происходит со значением?
В словаре не может быть 2 одинаковых ключа. Если передать 2 одинаковых ключа, присвоится самое последнее значение по ключу.
Что выведет данный код?
count = 0
while count <= 10:
print(count)
count += 1
0
1
2
3
4
5
6
7
8
9
10
Как вызывается функция и где передаются аргументы для нее?
Функция вызывается следующим образом:
func()
Аргументы функции передаются в скобках:
func(*args, **kwargs)
Что такое wrapper?
Функция wrapper нужна для написания доп.функционала, в нее прилетает функция, которую мы обертываем. В wrapper мы можем передать аргументы, которые нужны в функции, которую мы обертываем.
С помощью какого ключевого слова можно объявить глобальную переменную внутри функции? Для чего и в каких случаях используется ключевое слово nonlocal?
Глобальную переменную внутри функции можно объявить с помощью ключевого слова global.
Nonlocal - это ключевое слово, используемое внутри функций для указания, что переменная не является локальной, но и не глобальной. (Замкнутой)
Какими способами можно удалить значение из словаря? Чем эти способы различаются?
1. .pop(key, [message]) -> удаляет пару по ключу и возвращает значение. Если ключа не существует вовзвращает message, если не передать message бросает исключение (ошибка KeyError)
2. .popitem() -> удаляет последнюю пару в словаре и возвращает ключ и значение в виде tuple
3. del словарь[ключ] -> удаляет ключ и значение по ключу
Что делает оператор continue, break, pass?
continue -> переход к следующей итерации (начинает следующее прохождение цикла)
break -> выход из цикла (досрочное прерывание цикла)
pass -> заглушка (...), используется чтобы пропустить условие
Обязательно ли указывать return в конце функции? Что будет если не указать его?
Ключевое слово return, которое дает понять питону, что за этой командой будет какая-то информация, которая является окончательным продуктом работы функции и на этом функция заверашает свою работу. (Возвращает результат выполнения функции).
Указывать необязательно, но если не указать return функция возвращает None.
Что вернет эта функция?
def my_decorator(func):
def wrapper():
print("До вызова функции")
func()
print("После вызова функции")
return wrapper
@my_decorator
def say_hello():
print("Привет!")
say_hello()
До вызова функции
Привет!
После вызова функции
Что выведен следующий код?
name = 'Sandy'
def func_one():
name = 'Andy'
def func_two():
name = 'Mandy'
print(name)
print(locals())
func_two()
func_one()
Mandy
{'name': 'Mandy'}
Что делает метод fromkeys?
dict.fromkeys(seq, [value]) -> метод создает словарь с ключами из seq(итерируемый объект) и значением value (для всех ключей одинаковое). По умолчанию value - None. Seq (последовательность) могут являться только итерируемые данные
Пр.:
list_ = ['name', 'age', 'last_name']
dict_ = dict.fromkeys(list_, 'hello')
print(dict_)
Результат: {'name': 'hello', 'age': 'hello', 'last_name': 'hello'}
Что выполняет волшебное слово ‘else’ в цикле while и for?
Что выведет следующий код?
i = 0
while i <= 10:
print(i)
if i == 12:
break
i += 1
else:
print('All numbers are printed')
Проверяет цикл доработал ли до конца без выполнения break.
Код в Else отрабатывает, если интрукция break не сработала, то есть цикл отработал полностью (Завершился естественным путем) (Завершение через break -> принудительная остановка цикла)
0
1
2
3
4
5
6
7
8
9
10
All numbers are printed
Что выполняет следующий код и что он возвращает?
def factorial(n):
res = 1
for i in range(1, n + 1):
res *= i
return res
print(factorial(3))
print(factorial(5))
6
120
Что выведет слеуюищй код?
def a_decorator_passing_arguments(function_to_decorate):
def a_wrapper_accepting_arguments(arg1, arg2):
print arg1, arg2
function_to_decorate(arg1, arg2)
return a_wrapper_accepting_arguments
@a_decorator_passing_arguments
def print_full_name(first_name, last_name):
print "Меня зовут", first_name, last_name
print_full_name("Питер", "Венкман")
SyntaxError
def hello(name):
print(locals())
hello('makers')
{'name': 'makers'}
Может ли ключом в словаре быть tuple с изменяемым типом данных?
Нет, не может быть. Ключом в словаре может быть только неизменяемый тип данных.
Как пройтись через цикл в обратном порядке (в range)?
Надо указать шаг:
for i in range(1, 10, -1)