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
Функция enumerate возвращает объект-генератор, который позволяет итерироваться по значению, создаваемому в процессе выполнения кода, без необходимости загружать все значения в память сразу. Это особенно полезно для работы с большими и динамически генерируемыми наборами данных.

E = enumerate(S)
E # <enumerate object at 0x02765AA8>


В контексте задачи выше c — каждая из букв 'spam', i — её индексы в строке. Первый элемент результирующего списка равен пустоте, потому что c * i = 's' * 0 ('s' повторяется 0 раз).

В дальнейшем индексы повторяют буквы p, a и m по 1, 2 и 3 раза соответственно (перемножение строки и целого числа дает повторение строки).
Выполнится ли код выше? 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%
Все существуют