Простой тест на знание Python — вопросы

Материал из DISCOPAL
Перейти к: навигация, поиск
12345678910
Простой тест на знание Python

Вариант 426864673.


Ваше имя*:


Вопрос 1

Сколько элементов будет содержать список L после выполнения следующего кода:

L = []
L.append([1,2,3])
L.insert(1, "abc")
del L[0][0]
  1.  сообщение об ошибке
  2.  1
  3.  3
  4.  2
  5.  4

Вопрос 2

Имеются следующие определения:

 
class A:
  def am(self):
    print "am"
 
class B:
  def bm(self):
    print "bm"
 
a = A()
b = B()
 


Какой из фрагментов кода содержит ошибки?


  1.   A.am = b.bm; a.am()
  2.   a.am = b.bm; a.am()
  3.   A.am = B.bm; a.am()
  4.   a.am = b.bm; a.bm()

Вопрос 3

Что делает следующая программа?

 
import threading
ready = threading.Event()
 
def proc():
  ready.wait()
  print("Done!")
 
for i in range(5):
  p = threading.Thread(target=proc)
  p.start()
 
print("Prepare!")
ready.set()
 
  1.  программа запускает пять дополнительных потоков, печатающих "Done!" после выполнения ready.set(), то есть, после печати "Prepare!"
  2.  программа запускает пять дополнительных потоков, печатающих "Done!" одновременно
  3.  программа запускает пять дополнительных потоков, один из которых печатает "Done!" после выполнения ready.set(), а остальные ждут следующего ready.set()
  4.  программа создает пять дополнительных потоков, которые запускаются после выполнения ready.set() в главном потоке

Вопрос 4

Сокрытие информации о внутреннем устройстве объекта, при котором вся работа с объектом ведется только через общедоступный интерфейс называется

  1.  инкапсуляцией
  2.  декомпозицией
  3.  абстракцией
  4.  агрегацией

Вопрос 5

Какого типа значение получится в результате вычисления следующего выражения:

(" ", )
  1.  это синтаксическая ошибка
  2.  tuple (кортеж)
  3.  unicode (Unicode-строка)
  4.  str (строка)

Вопрос 6

Что делает следующая программа?

 
import threading
l = threading.RLock()
 
def proc(nm, n=0):
  l.acquire()
  try:
    if n < 5:
      print("*", end='')
      return proc(nm, n+1)
    else:
      return nm
  finally:
    l.release() 
 
for i in range(5):
  threading.Thread(target=proc, args=(str(i),)).start()
  1.  печатает 5 звездочек
  2.  аварийно завершается при попытке выполнить l.acquire() во второй раз
  3.  беспрерывно печатает звездочки
  4.  печатает 1 звездочку и зависает
  5.  печатает 25 звездочек

Вопрос 7

Начало определения функции «f» выглядит так:

def f(a, b, c=None, d="0"):

Какие из следующих вариантов вызова приведут к ошибке на этапе присваивания фактических параметров формальным?

  1.  «f(1, 2, d=3)»
  2.  «f(1, d=3)»
  3.  «f(1, 2, 3, 4)»
  4.  «f(1, 2, d=3, c=4)»
  5.  «f(1, 2)»

Вопрос 8

Какую роль играет xx в следующей Python-программе

 
def xx(func):
  class X(object):
    pass
  setattr(X, func.__name__, func)
  return X
 
  1.  функция-фабрика
  2.  функция-фабрика классов
  3.  метод класса
  4.  метакласс

Вопрос 9

В каких точках программы необходимо выполнять acquire() и release() замка Z, чтобы функция f могла правильно работать в многопоточном приложении? (Как обычно, нужно минимизировать общее время, на которое запирается замок)

def f(x, y, z):
  global d
  # 1
  d[(x, y)] = z
  # 2
  res = len(d)
  # 3
  return res


  1.  замок не нужен
  2.  1: Z.acquire(), 2: Z.release(), Z.acquire(), 3: Z.release()
  3.  1: Z.acquire(), 3: Z.release()
  4.  1: Z.acquire(), 2: Z.release()

Вопрос 10

Какую роль играет «xx» в Python-программе, и чему должен быть равен «XXX»:

 
class A:
  def xx():
    return A.__name__
  xx = XXX(xx)
 
  1.  метод класса, XXX равен classmethod
  2.  метод, XXX равен instancemethod
  3.  функция, XXX можно опустить
  4.  статический метод, XXX равен staticmethod