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

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

Вариант 1121770043.


Ваше имя*:


Вопрос 1

Какие новые имена появятся в текущем модуле после выполнения следующего кода:

import sre as re
from re import compile
  1.  нельзя одновременно делать import и «from … import»
  2.  только имена sre и compile
  3.  имена sre, re и compile
  4.  только имена re и compile

Вопрос 2

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

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

Вопрос 3

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

S = "\n123\\"
  1.  5
  2.  сообщение об ошибке
  3.  6
  4.  4
  5.  3
  6.  7

Вопрос 4

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

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


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

Вопрос 5

Класс имеет методы «__iter__()» и «next()».

О чем это говорит и как пользоваться этим методом?

 
class A:
  #...
  def __iter__(self): 
    #...
  def next(self):
    #...
a = A(1, 2, 3)
 
  1.  нет особого названия. Пользоваться можно так: print a.next()
  2.  последовательность. Пользоваться можно так: print a[2]
  3.  итератор. Пользоваться можно так: for i in a: print i
  4.  генератор. Пользоваться можно так: for i in a(): print i

Вопрос 6

Какие новые имена появятся в текущем модуле после выполнения следующего кода:

import re
from re import compile
  1.  только имя compile
  2.  все имена из re (импорт compile был лишним)
  3.  нельзя одновременно делать import и «from … import»
  4.  только имена re и compile

Вопрос 7

Карринг — это...

  1.  возврат объекта-функции из другой функции
  2.  передача функции в другую функцию
  3.  получение новой функции на основе заданной функции, при котором часть аргументов получает значение
  4.  перенос параметров функции в ее результат

Вопрос 8

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

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

Вопрос 9

Может ли возникнуть 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_B.acquire()
   res_A.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()


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

Вопрос 10

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

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