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

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

Вариант 135375378.


Ваше имя*:


Вопрос 1

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

 
def A(lst):
  return lambda x: lst + [x]
 
def B(x):
  return lambda lst: lst + [x]
 
def C(x, cache={}):
  return cache.setdefault(x, lambda lst: lst + [x])
 
  1.  A, B, C
  2.  только B и C
  3.  только C
  4.  никакие

Вопрос 2

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

import threading
 
res_A = threading.Lock()
res_B = threading.Lock()
 
def proc1():
   res_A.acquire()
   res_B.acquire()
   # ...
   res_B.release()
   res_A.release()
 
def proc2():
   res_A.acquire()
   res_B.acquire()
   # ...
   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.  да, возможно

Вопрос 3

В каких местах допущены ошибки в генераторном выражении, выдающем список координат полей шахматной доски?

(j+str(i) for i in range(1, 9) for j in "abcdefgh")
  1.  ошибка в «for i in range(1, 9)»
  2.  ошибок нет
  3.  ошибка в «for j in "abcdefgh"»
  4.  ошибка в «j+str(i)»

Вопрос 4

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

import threading
 
class PR(threading.Thread):
  def __init__(self, n):
    threading.Thread.__init__(self, name="t" + n)
    self.n = n
  def run(self):
    import time
    time.sleep(1)
    print("*", end='')
 
p1 = PR("1")
p2 = PR("2")
p1.start()
p2.start()


  1.  выводит две звездочки спустя секунду после запуска
  2.  выводит одну звездочку и завершается
  3.  через секунду выводит звездочку, а затем через секунду — еще одну
  4.  выводит одну звездочку и зависает

Вопрос 5

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

 
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()

Вопрос 6

Какая операция выполняет пересечение множеств:

A = set([1, 2, 3])
B = set([2, 3, 7])
  1.  «A * B»
  2.  «A | B»
  3.  «A & B»
  4.  «A ^ B»

Вопрос 7

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

[x for x in itertools.takewhile(lambda x: x < 23, itertools.count(10))]
  1.  10
  2.  13
  3.  0
  4.  23

Вопрос 8

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

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

Вопрос 9

Какой длины строки можно использовать в Python?

  1.  256 символов
  2.  длины строк должны быть не больше, чем при их определении
  3.  длина строк ограничивается имеющейся памятью
  4.  65536 символов

Вопрос 10

Какие из приведенных ниже сравнений могут дать True, если объекты x и y имеют разные значения?

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