fa
Feedback
Python: задачки и вопросы

Python: задачки и вопросы

رفتن به کانال در Telegram

Вопросы и задачки для подготовки к собеседованиям и прокачки навыков Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Другие наши проекты: https://tprg.ru/media

نمایش بیشتر
7 127
مشترکین
اطلاعاتی وجود ندارد24 ساعت
+67 روز
اطلاعاتی وجود ندارد30 روز
آرشیو پست ها
#ловушка
#ловушка

В данной задаче важно помнить, что Python — интерпретируемый язык, то есть код читается и исполняется построчно. — Переменной X присваивается значение 99; — В функции selector() есть ключевое слово global: X ссылается на глобальную переменную; — В selector() выполняется команда print(X), которая сразу же обращается к глобальной переменной X, и на данный момент её значение — 99. Поэтому на этом шаге будет выведено 99. — Затем X присваивается новое значение 88, но это произойдёт после того, как было выведено значение.

Что вывдет код?
Anonymous voting

#ловушка
#ловушка

X = 99

def selector(): # Имя X используется, но не присваивается
    print(X)        # Имя X найдено в глобальной области видимости
    
selector()

Что выведет код?
Anonymous voting

#ловушка
#ловушка

'spam' * 3 генерирует строку 'spamspamspam', которая состоит из трех повторений строки 'spam'; — используется генератор списка [], который обходит каждый символ строки 'spamspamspam'; — Функция f(x) просто возвращает переданное ей значение x без изменений.

Что выведет код?
Anonymous voting

#размяться
#размяться

Из всех флагов только -s действительный:
-s S, --setup=S statement to be executed once initially (default pass)
Для указания кода настройки в режиме командной строки применяется строка после флага —s (или несколько в случае многострочного кода настройки), а в режиме вызовов API-интерфейса — аргумент setup. В итоге тесты можно ориентировать более четко, например, выносить инициализацию списка выносится в код, чтобы измерять время только итерации:

python3 -m timeit -n 1000 -r 3 -s "L = [1,2,3,4,5]" "M = [x + 1 for x in L]"
Подробнее в документации

Какой флаг модуля timeit существует?
Anonymous voting

Модуль timeit позволяет измерить время исполнения кода. В команде python3 -m timeit -n 1000 -r 3 "L = [1,2,3,4,5]" "M = [x + 1 for x in L]" используются несколько флагов, которые управляют поведением модуля: -n 1000: флаг указывает количество повторений. Тестируемый код будет выполняться 1000 раз за каждую итерацию. -r 3: флаг задает количество повторных запусков всего теста Вывод у команды будет такой (проверено на Python 3.13.1):

1000 loops, best of 3: 111 nsec per loop

#размяться
#размяться

Что делает этот код?
Anonymous voting

Какой метод позволяет узнать количество строк датафрейма?
Anonymous voting

map() — самый быстрый вариант, поскольку функция фактически работает на C. И это превышает скорости конкурентов. А кто в рейтинге взял серебро и бронзу? Как видно, в каждой функции по 10 миллионов шагов функций — каждая строит список из 10 000 элементов 1000 раз. Запустив сценарий в Python 3.7, мы получаем следующие результаты — map() быстрее списковых включений, они оба быстрее циклов for, а генераторные выражения и функции находятся посередине (время в секундах):

forLoop :: 2.34160
listComp : 1.31783
mapCall :: 0.41968
genExpr :: 1.92063
genFunc :: 1.93672
Генераторное выражение должно делать дополнительную работу по сохранению и восстановлению своего состояния во время выпуска значений.

Какой из способов создания списка самый быстрый?
Anonymous voting

#ловушка
#ловушка

Модуль time позволяет замерить время исполнения кода. Вот пример функции с ее использованием:
import time

def timer(func, *args): # Упрощенная функция измерения времени
    start = time.clock()
    for i in range(1000):
        func(*args)
    return time.clock() - start # Суммарное истекшее время в секундах
Что делают остальные модули, можно посмотреть в полном списке в документации Python.