Python: задачки и вопросы
7.75K subscribers
1.19K photos
1 video
1 file
89 links
Вопросы и задачки для подготовки к собеседованиям и прокачки навыков

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Другие наши проекты: https://tprg.ru/media
Download Telegram
Выполнится ли код выше? file.py существует и является валидным файлом.
Anonymous Quiz
57%
Да
43%
Нет
В вызовах функций можно применять специальную форму *аргумент для распаковки коллекции значений в индивидуальные аргументы. Здесь подойдет любой итерируемый объект, в том числе и файлы.
sorted(testDict) сгенерирует список упорядоченных ключей testDict, то есть:

sortedKeys = sorted(testDict) 
print(sortedKeys) # ['a', 'b', 'c']


Теперь для каждого элемента sortedKeys мы генерируем пару "ключ: значение по ключу из testDict")

# Для i = 0
print(sortedKeys[0], testDict['a']) # a: 2
В Python ради гибкости вызовам функций можно передавать аргументы по имени с помощью синтаксиса имя=значение и распаковывать произвольно много аргументов для отправки посредством снабжения аргументов звездочками — *args (позиционные аргументы) и **kwargs ключевые аргументы — Keyword arguments.

Пример позиционных аргументов:
def print_numbers(*args):
for number in args:
print(number)

# Вызов функции с произвольным количеством аргументов
print_numbers(1, 2, 3, 4, 5)


Пример именованных аргументов:
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")

# Вызов функции с произвольным количеством ключевых аргументов
print_info(name="Alice", age=30, city="New York")
Если у функции нет return, что она вернет по умолчанию
Anonymous Quiz
5%
True
4%
NaN
79%
None
12%
Пустую строку
Что выведет код выше?
Anonymous Quiz
4%
m
11%
s
67%
[1]
18%
Error
Немного про области видимости

Имена, определяемые внутри инструкции def, не вступают в конфликт с именами, находящимися за ее пределами, даже если и там и там присутствуют одинаковые имена. Имя X, которому присвоено значение за пределами данной инструкции, полностью отлично от имени X, которому присвоено значение внутри инструкции def.
Какой области видимости не существует?
Anonymous Quiz
27%
Нелокальная
2%
Глобальная
32%
Встроенная
39%
Все существуют
В каком порядке Python сканирует области видимости при поиске той или иной переменной?
Anonymous Quiz
25%
Builtins - Local - Enclosing - Global
37%
Local - Enclosing - Global - Builtins
16%
Enclosing - Local - Global - Builtins
21%
Local - Global - Builtins
Что выведет код?
Anonymous Quiz
64%
25
2%
0
8%
5
26%
Error
Замыкание (closure) представляет функцию, которая запоминает свое лексическое окружение даже в том случае, когда она выполняется вне своей области видимости.

Технически замыкание включает три компонента:
— внешняя функция multiply(), которая определяет некоторую область видимости и в которой определены некоторые переменные и параметры - лексическое окружение
— переменные и параметры (лексическое окружение), которые определены во внешней функции.
— вложенная функция inner(), которая использует переменные и параметры внешней функции.

inner() запоминает окружение, в котором была создана, в частности, значение параметра n. Кроме того, сама принимает параметр и возвращает произведение параметров n и m.