Добавить в корзинуПозвонить
Найти в Дзене
DATA SUETIST

Как приручить питона?

Недавно была на занимательном онлайн-митапе сообщества python-разработчиков, где обсуждали вопросы, которые обычно задают на собеседовании. Я думала (до этого митапа), что неплохо разбираюсь в питоне для самоучки. НЕ ТУТ-ТО БЫЛО! Эти вопросы оказались на какое-то глубинное понимание python-парадигмы.
Самое уморительное то, что докладчик не сказал на какой грейд были рассчитаны эти вопросы.

Недавно была на занимательном онлайн-митапе сообщества python-разработчиков, где обсуждали вопросы, которые обычно задают на собеседовании. Я думала (до этого митапа), что неплохо разбираюсь в питоне для самоучки. НЕ ТУТ-ТО БЫЛО! Эти вопросы оказались на какое-то глубинное понимание python-парадигмы.

Самое уморительное то, что докладчик не сказал на какой грейд были рассчитаны эти вопросы. Слушатели были также шокированы как и я, поэтому в опроснике большинство ответило что это вопросы уровня middle+, но кажется лектор предполагал, что это все-таки junior + (мне плохо физически)… И честно вам скажу: я не знала ответ на большинство из вопросов, но для вас (и себя) я все записала и разобралась, и сейчас все расскажу)

Слабые места у подавляющего числа соискателей.

1) Общая база computer science в том числе алгоритмы и архитектура программ

2) Внутреннее устройство Python

3) «Батарейки» в языке (я даже не знала, что такое батарейки)

4) Конкурентное программирование

5) Устройство и возможности фреймворков

А теперь самое интересное.

Конкретные задачи и их решение

Распаковка списка

items = ['Ivan', ['Petr', ['Kate'], (1, 2, 3), frozenset((4,5,6)), b'Alexandr']]

from collections.abc import Iterable

def flatten(items, ignore_types=(str, bytes)):

  for x in items:

    if isinstance(x, Iterable) and not isinstance(x, ignore_types):

      yield from flatten(x)

    else:

      yield x

print(list(flatten(items)))

Как вызывать функцию по ее строковому имени? (Реактивное программирование)

class A:

  def get_data(self):

    return {"a": 1, "b": 2}

a = A()

if hasattr(a, "get _data"):

  target_func = getattr(a, "get_data")

  print(target_func())

Количество вызовов функции 

def foo():

  if not hasattr(foo, 'count'):

    foo.count = 0

  foo.count += 1

  return True

foo()

print(foo.count)

foo()

print(foo.count)

Какое исключение выпадет? (1 исключение выполняется 

всегда)

try:

  f = open ('my_file')

except OSError:

  print('It failed')

except FileNotFoundError:

  print( 'File not found')

#найм_IT #развитие