Привет! Мы обожаем квизы, посвященные языкам программирования. В нашем блоге мы разместили уже целых три: первый — по Python, PHP, Golang, DevOps, второй — полностью по Go, третий — только по PHP. Сегодняшний квиз посвящен исключительно Python.
Предлагаем вам размяться в честь конца ещё одной летней недели и в преддверии PyCon Russia 2018. (Кстати, кто едет? Мы там будем).
Под катом — семь вопросов, советы от друга, Чапаев, отрывки из ABBA (что? да!) и крутой мерч.
UPD: Мы закончили принимать ответы. Спасибо всем, кто поучаствовал! Ответы на вопросы — внутри текста, а победители и призеры под спойлером.
Победитель
Призеры
Второе место: acerikfy
Третье место: Histiophryne
Четвертое — десятое место: Swezy_ua, SlonPC, noth, IIRoadRunnerII, term1nal, alexchromets, Tihon_V .
Бонус
Так много участников дали правильные ответы, что мы решили разыграть случайным образом еще пять пар носков среди них. Крутые носки от Авито получают: sunman, grt_pretender, Vash, ipatov_dn, institoris
Запись розыгрыша

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

Вопросы
*Во всех случаях речь про Python 3.
Вопрос 1
Какой результат будет в переменно�� t:
>>> t = (1, 2, [30,40])
>>> t[2] += [50, 60]Варианты ответов:
- вылетит 
TypeError, вtбудет(1, 2, [30, 40, 50, 60]), - вылетит 
TypeError, вtбудет(1, 2, [30, 40]), (1, 2, [30, 40, 50, 60]),(1, 2, [30, 40]).
вылетит TypeError, в t будет (1, 2, [30, 40, 50, 60])
Вопрос 2
Есть у тебя такая структура модулей:
foo_app/
    snatch/
        qwerty.py
bar_app/
    snatch/
        mamamia.pyКак бы так сделать, чтобы можно было в коде импортировать эти модули таким образом:
from snatch import qwerty, mamamiaВарианты ответов:
- перед запуском скрипта выполнить 
export PYTHONPATH=foo_аpp:bаr_аpp, - в начало скрипта добавить:
import sys sys.path.extend([‘foo_app’, ‘bar_app’]) - оба варианта выше — работающие,
 - так нельзя сделать.
 
оба варианта выше — работающие
Вопрос 3
Есть скрипт:
class A:
    def get_some(self):
        super().get_some()
class B:
    def get_some(self):
        print('Some')
class C(A, B):
    def get_some(self):
        super().get_some()
c = C()
c.get_some()Что будет на выходе?
Варианты ответов:
AttributeError: 'C' object has no attribute 'get_some',AttributeError: 'super' object has no attribute 'get_some',Some,- пустота (без Чапаева).
 
Some
Вопрос 4
Что будет выведено на экран при запуске такого кода:
class A:
   def foo(self):
       print('foo A')
class B:
   def foo(self):
       print('foo B')
class C(A, B):
   def foo(self):
       super().foo()
class D(B, A):
   def foo(self):
       super().foo()
class E(C, D): pass
e = E()
e.foo()Варианты ответов
foo A,foo B,TypeError: Cannot create a consistent method resolution order (MRO) for bases A, B.
TypeError: Cannot create a consistent method resolution order (MRO) for bases A, B
Вопрос 5
Представь, у тебя есть модуль foo.py:
def bar():
    print(‘Привет, друг!’)И ты запускаешь другой скрипт:
import importlib
import foo
from foo import bar
input(‘Друг, нажми ввод’)
importlib.reload(foo)
bar()Пока он ждет ввода, ты меняешь модуль foo.py:
def bar():
    print(‘Пока, друг!’)Далее ты жмешь «ввод» в foo.py, чтобы он продолжил работу и видишь...
Варианты ответов:
ModuleReloadedException: method bar() was reloaded,Пока, друг!,Привет, друг!,- пустоту (и опять нет Чапаева).
 
Привет, друг!
Вопрос 6
Что будет выведено на экран при запуске такого кода:
class A:
   def __init__(self):
       print('__init__ A', end=' ')
class B:
   def __init__(self):
       print('__init__ B', end=' ')
class C(A, B): pass
c = C()Варианты ответов:
__init__ A __init__ B__init__ B __init__ A__init__ A__init__ B
__init__ A
Вопрос 7
Что будет в выводе после выполнения следующего кода?
def not_(value): return not value
result = not_(0), all(any([not_(x) for x in range(b)]) for b in range(10))
print(result)Варианты ответов:
(True, True),(True, False),ValueError: need more than 2 values to unpack,def not_(value): return value ^ SyntaxError: invalid syntax
(True, False)
Подведение итогов
Ответы на вопросы выложим апдейтом к посту в среду, 25 июля. Если будете решать — кладите ответы под спойлер, чтобы другим участникам было интереснее решать вопросики.
И (!) не забывайте проверять личку Хабра после окончания квиза.
