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

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

Вариант 1681198572.


Ваше имя*:


Вопрос 1

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

import threading
l = threading.Lock()
 
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.  печатает 25 звездочек
  2.  печатает 5 звездочек
  3.  печатает 1 звездочку и зависает
  4.  беспрерывно печатает звездочки
  5.  аварийно завершается при попытке выполнить l.acquire() во второй раз

Вопрос 2

Какими способами можно получить доступ к функции «fun()» из модуля «fns»?

  1.  import fns; fns.fun()
  2.  import fns.fun as fun; fun()
  3.  import fns.fun; fns.fun()

Вопрос 3

Какие встроенные функции служат для создания объектов определенного типа (конструкторы классов/функции-фабрики…)?

  1.  chr()
  2.  isinstance()
  3.  tuple()

Вопрос 4

Какое из приведенных ниже регулярных выражений некорректно?

  1.  (?P<k>(ac))
  2.  [a]*?
  3.  a+b++
  4.  (a+b+)+

Вопрос 5

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

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.  никакие
  2.  только A и B
  3.  только B
  4.  A, B, C
  5.  только B и C

Вопрос 6

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

 
def m1(self):
  print("m1")
 
class M:
  def m2(self):
    print("m2")
 
m = M()
 


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


  1.   M.m1 = m1; m.m1()
  2.   m.m1 = m1; m.m1()
  3.   m.m1 = m1; m.m1(m)
  4.   m.m1 = m.m2; m.m1()

Вопрос 7

С помощью какого регулярного выражения можно найти все (ровно) пятикратные повторения цифры 0?

  1.  00000([^0]|\Z)
  2.  ([^0]|\A)0{5}([^0]|\Z)
  3.  0{1,5}[^0]
  4.  0{5}[^0]
  5.  00000

Вопрос 8

Может ли возникнуть 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.  нет, не возникнет

Вопрос 9

С помощью какого из приведенных ниже сравнений можно установить, что x и y — это один и тот же объект?

  1.  id(x) == id(y)
  2.  x == y
  3.  hash(x) == hash(y)

Вопрос 10

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

import os
global v
v = 0
 
def A(x, y):
  return abs(x + y)
 
B = lambda k, v: os.environ.setdefault(k, v)
 
def C(x):
  global v
  v = v + 1
  return v + x


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