Hallo! Wir lieben Quiz über Programmiersprachen. Wir haben bereits drei in unserem Blog veröffentlicht: die erste - in Python, PHP, Golang, DevOps, die zweite - vollständig in Go, die dritte - nur in PHP. Das heutige Quiz ist ausschließlich Python gewidmet.
Wir laden Sie ein, sich zu Ehren des Endes einer weiteren Sommerwoche und am Vorabend der PyCon Russia 2018 aufzuwärmen . (Übrigens, wer geht? Wir werden da sein).
Unter dem Schnitt - sieben Fragen, Ratschläge von einem Freund, Chapaev, Auszüge aus ABBA ( was? Ja! ) Und ein cooler Merch.
UPD: Wir haben die Antworten akzeptiert. Vielen Dank an alle, die teilgenommen haben! Die Antworten auf die Fragen befinden sich im Text, und die Gewinner und Preisträger stehen unter dem Spoiler.
Gewinner und Preisträger des QuizGewinner
Vadem
Preisträger
Zweiter Platz: acerikfy
Dritter Platz: Histiophryne
Vierter - zehnter Platz: Swezy_ua , SlonPC , noth , IIRoadRunnerII , term1nal , alexchromets , Tihon_V .
Bonus
So viele Teilnehmer gaben die richtigen Antworten, dass wir beschlossen, zufällig weitere fünf Paar Socken unter ihnen zu spielen. Coole Socken von Avito erhalten: sunman , grt_pretender , Vash , ipatov_dn , institoris
Rekord zeichnen

Preise
Die Preise werden unter den Top Ten verteilt. Als erster , der alle Fragen des Python-Quiz richtig beantwortet, senden wir ein erweitertes Avito-Merch-Kit: ein Sweatshirt, Socken und hohle Knochen - Sie können sich vorstellen, in welcher Backend-Sprache und in welchem Frontend-Framework Ihr neues Projekt geschrieben wird. Der zweite Teilnehmer, der die Aufgaben erledigt hat, erhält Holivones, Socken und ein T-Shirt. Der dritte bekommt das gleiche Set, aber ohne T-Shirt / Sweatshirt. Unter den verbleibenden sieben Teilnehmern werden wir eine Thermoflasche mit einem Karabiner spielen, die auch auf einer Wanderung, zumindest bei einem Hackathon, mitgenommen werden kann.

Fragen
* In allen Fällen handelt es sich um Python 3.
Frage 1
Was ist das Ergebnis in der Variablen t
:
>>> t = (1, 2, [30,40]) >>> t[2] += [50, 60]
Antwortoptionen:
TypeError
wird TypeError
, bei t
sein (1, 2, [30, 40, 50, 60])
,TypeError
wird TypeError
, bei t
sein (1, 2, [30, 40])
,(1, 2, [30, 40, 50, 60])
,(1, 2, [30, 40])
.
Richtige AntwortTypeError
wird TypeError
, bei t
sein (1, 2, [30, 40, 50, 60])
Frage 2
Haben Sie eine solche Modulstruktur:
foo_app/ snatch/ qwerty.py bar_app/ snatch/ mamamia.py
So machen Sie es, dass Sie diese Module auf folgende Weise in den Code importieren können:
from snatch import qwerty, mamamia
Antwortoptionen:
Richtige AntwortBeide oben genannten Optionen funktionieren
Frage 3
Es gibt ein Skript:
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()
Was wird die Ausgabe sein?
Antwortoptionen:
AttributeError: 'C' object has no attribute 'get_some'
,AttributeError: 'super' object has no attribute 'get_some'
,Some
- Leere (ohne Chapaev).
Frage 4
Was wird angezeigt, wenn Sie diesen Code ausführen:
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()
Antwortoptionen
foo A
,foo B
,TypeError: Cannot create a consistent method resolution order (MRO) for bases A, B
Richtige AntwortTypeError: Cannot create a consistent method resolution order (MRO) for bases A, B
Frage 5
Stellen Sie sich vor, Sie haben ein Modul foo.py:
def bar(): print(', !')
Und Sie führen ein anderes Skript aus:
import importlib import foo from foo import bar input(', ') importlib.reload(foo) bar()
Während es auf die Eingabe wartet, ändern Sie das Modul foo.py:
def bar(): print(', !')
Als nächstes drücken Sie die "Eingabe" in foo.py, damit es weiter funktioniert und Sie sehen ...
Antwortoptionen:
ModuleReloadedException: method bar() was reloaded
,, !
,, !
,- Leere (und wieder gibt es keinen Chapaev).
Frage 6
Was wird angezeigt, wenn Sie diesen Code ausführen:
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()
Antwortoptionen:
__init__ A __init__ B
__init__ B __init__ A
__init__ A
__init__ B
Frage 7
Was wird in der Ausgabe sein, nachdem der folgende Code ausgeführt wurde?
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)
Antwortoptionen:
Zusammenfassung
Wir werden Antworten auf Fragen per Update am Mittwoch, den 25. Juli, veröffentlichen. Wenn Sie sich entscheiden - stellen Sie die Antworten unter den Spoiler, damit andere Teilnehmer mehr an der Lösung von Fragen interessiert sind.
Und (!) Vergessen Sie nicht, nach dem Ende des Quiz das Konto des Habr zu überprüfen.