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

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

Вариант 671532745.


Ваше имя*:


Вопрос 1

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

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

Вопрос 2

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

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

Вопрос 3

Из какого модуля будет работать функция «replace()» в следующем примере:

from sre import sub as replace
from string import replace
  1.  sre.sub
  2.  возникнет ошибка (конфликт имен)
  3.  из string
  4.  из sre.string

Вопрос 4

Имеется следующий массив:

b = array([[1, 2], [0, 1]])

Какие из приведенных ниже операций получения среза вызовут ошибку?


  1.  b[:, 2]
  2.  b[...]
  3.  b[: , :]
  4.  b[0, ...]

Вопрос 5

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

Вопрос 6

Что обычно делается для возврата более одного значения из функции?

  1.  значения можно вернуть через объекты, заданные в списке аргументов (как в C/C++)
  2.  возвращается кортеж значений
  3.  возвращается список значений
  4.  ничего; возвратить можно только одно значение

Вопрос 7

Какие методы необходимо иметь x для задания следующих действий:

>>> x = X(0)
>>> print x + 10
10
>>> print x - 23
-23
>>> print x >> 2
0


  1.  __init__, __add__, __sub__, __rshift__, __str__, __repr__
  2.  __init__, __add__, __sub__, __rshift__, __str__
  3.  __init__, __add__, __radd__, __sub__, __rsub__, __rshift__, __rrshift__
  4.  __init__, __add__, __sub__, __rshift__

Вопрос 8

Каким из приведенных ниже способов можно убрать из строки s пробельные символы слева и справа?

  1.  s.split()
  2.  s.isspace()
  3.  s.strip()
  4.  s.trim()

Вопрос 9

Что будет выведено в результате выполнения сопоставления с регулярным выражением?

m = re.match("(a*?)(a+)(b+?)", "aaabbb")
print(m.groups())
  1.  ('aa', 'a', 'bbb')
  2.  (, 'aaa', 'b')
  3.  ('aa', 'a', 'b')
  4.  ('a', 'aa', 'b')

Вопрос 10

Что такое «os.environ»?

  1.  системные константы Python
  2.  функция для получения переменных окружения
  3.  последовательность переменных окружения
  4.  словарь переменных окружения