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

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

Вариант 1650855556.


Ваше имя*:


Вопрос 1

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

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

Вопрос 2

Что произойдет при повторном импорте модуля (в том же блоке кода) оператором import

  1.  модуль будет заново загружен с диска
  2.  программа завершится по ошибке
  3.  ничего

Вопрос 3

Даны матрицы a и b.

 
import numpy as np
…
 

Как получить произведение матриц?


  1.  np.product(a, b)
  2.  np.dot(a, b)
  3.  np.vdot(a, b)
  4.  a * b

Вопрос 4

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

from sre import *
from string import *
split('a', 'b')
  1.  из string
  2.  из sre.string
  3.  возникнет ошибка (конфликт имен)
  4.  из re

Вопрос 5

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

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

Вопрос 6

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

Вопрос 7

Какие встроенные функции возвращают в качестве значения словарь (или подобный объект)?

  1.  locs()
  2.  enumerate()
  3.  dir()

Вопрос 8

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

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.  генератор будет портить переданные ему списки

Вопрос 9

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

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

Вопрос 10

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

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