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

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

Вариант 1589980218.


Ваше имя*:


Вопрос 1

Какие встроенные функции служат для работы с атрибутами объекта?

  1.  callable(), super()
  2.  type(), intern(), del
  3.  staticmethod(), classmethod(), property()
  4.  hasattr(), getattr(), setattr(), delattr()

Вопрос 2

Как называется отношение, которое имеют следующие два класса:

 
class A(type):
  def __init__(cls, name, bases, dict):
    return super(A, cls).__init__(cls, name, bases, dict)
 
B = A("B", (), {})
 
  1.  наследование. B получается наследованием A
  2.  метакласс. A является метаклассом для B
  3.  метакласс. B является метаклассом для A
  4.  ассоциация. A содержит ссылки на B

Вопрос 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(), а остальные ждут следующего ready.set()
  2.  программа запускает пять дополнительных потоков, печатающих "Done!" одновременно
  3.  программа запускает пять дополнительных потоков, печатающих "Done!" после выполнения ready.set(), то есть, после печати "Prepare!"
  4.  программа создает пять дополнительных потоков, которые запускаются после выполнения ready.set() в главном потоке

Вопрос 4

Что можно узнать с помощью регулярного выражения r'([01]+)\1\1'?

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

Вопрос 5

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

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

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

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

Вопрос 6

Какие из перечисленных функций имеют побочные эффекты:

lst = []
 
def A(l, x):
  return lst + [x]
 
def B(l, x):
  lst.append(x)
  return lst
 
def C(l, x):
  return lst.count(x)


  1.  A, B, C
  2.  только B
  3.  никакие
  4.  только A и B
  5.  только B и C

Вопрос 7

Получен новый пакет (в виде исходных кодов) для Python. Какова рекомендуемая процедура установки нового модуля, если известно, что он использует «distutils»?

  1.  выполнить «distutils --install имя модуля»
  2.  скопировать содержимое в каталог .../site-packages
  3.  в Windows — запустить установщик
  4.  выполнить в каталоге с развернутым пакетом команду «python setup.py install»

Вопрос 8

Чему будет равно значение следующего выражения:

import numpy as np
print(np.shape(np.array([[1, 2], [3, 4], [5, 6]])))
  1.  (3,)
  2.  (3, 2)
  3.  (6,)
  4.  (2, 3)

Вопрос 9

Может ли возникнуть deadlock в следующей программе:

import threading
 
res_A = threading.Lock()
res_B = threading.Lock()
res_C = threading.Lock()
 
def proc1():
   res_A.acquire()
   res_B.acquire()
   res_C.acquire()
   # ...
   res_C.release()
   res_B.release()
   res_A.release()
 
def proc2():
   res_A.acquire()
   res_B.acquire()
   res_C.acquire()
   # ...
   res_C.release()
   res_B.release()
   res_A.release()
 
p1 = threading.Thread(target=proc1, name="t1")
p2 = threading.Thread(target=proc2, name="t2")
p1.start()
p2.start()
p1.join()
p2.join()


  1.  да, обязательно
  2.  да, возможно
  3.  нет, не возникнет

Вопрос 10

Имеется следующий генератор для слияния двух отсортированных последовательностей:

def merge(a1, a2):
 a1 = list(a1)
 a2 = list(a2)
 while a1 or a2:
   if a1 and (not a2 or a1[0] < a2[0]):
     r = a1
   else:
     r = a2
   yield r[0]
   del r[0]

Какие ошибки или особенности имеет эта программа?


  1.  генератор оставит за собой временный список, так как «del» происходит после «yield»
  2.  в последней строке каждый раз удаляется элемент из временного списка, а не из «a1» или «a2»: генератор зациклится
  3.  генератор будет портить переданные ему списки
  4.  ошибок нет