01. Устройство CPython - Егор Овчаренко

Sdílet
Vložit
  • čas přidán 5. 08. 2024
  • В лекции мы поговорим о том, почему и что мы пишем на Python. Обсудим устройство интерпретатора и словарей, менеджмент памяти и типизацию. Вы узнаете, как работают генераторы и как устроены исключения.
    Презентация: yadi.sk/i/dcNx5Sgix4axOA
    Полезные ссылки:
    Интепретатор в целом:
    docs.python.org/3/reference/e...
    github.com/python/cpython
    leanpub.com/insidethepythonvi...
    Управление памятью:
    www.arctrix.com/nas/python/gc/
    rushter.com/blog/python-memor...
    instagram-engineering.com/dis...
    stackify.com/python-garbage-c...
    Исключения:
    bugs.python.org/issue17611
    Весь плейлист: • Школа бэкенд-разработк...
  • Věda a technologie

Komentáře • 71

  • @user-it1jg6wl6e
    @user-it1jg6wl6e Před 4 lety +2

    Очень полезная информация. Спасибо.

  • @zhanibekkaimuldenov8272
    @zhanibekkaimuldenov8272 Před 4 lety +13

    Вопросы аудитории очень хорошие, разбавляют лекцию хорошо

  • @alexander.kochkarev
    @alexander.kochkarev Před 3 lety +2

    Спасибо! Полезная лекция. Хороший вход в Python для знакомых с Си.

  • @robertalaverdyan3150
    @robertalaverdyan3150 Před 2 lety +4

    Хороший материал. Я не новичок в питоне или Си но материал дал начало для глубокого узучения Cpython.

  • @user-yv8fs8mh6t
    @user-yv8fs8mh6t Před 4 lety +5

    Лекция первоклассная, большое спасибо!)

  • @GLOBALeVGENIUS
    @GLOBALeVGENIUS Před 4 lety +32

    Лекция отличная. По звуку небольшое замечание, очень неестественно звучит, когда фоновые шумы в промежутках между фразами вырезаны.

    • @evax2975
      @evax2975 Před 3 lety +1

      да там свист на фоне. Они видать его выпилить гейтом пытались. Но лучше бы уж частоту замьютили свиста. Реально сложно слушать когда вот так дергает

    • @KkkKkk-vg6jb
      @KkkKkk-vg6jb Před rokem

      Да, звук адский

  • @Sergey-cz7ym
    @Sergey-cz7ym Před rokem +1

    по поводу вопроса к try - в любом случае функция выходит только в finally, return в try и except игнорируются, но код в try и except выполняется:
    def test():
    try:
    print('try')
    return (1/0)
    except:
    print('except')
    return ('except')
    else:
    return ('else')
    finally:
    print ('finally')
    return ('finally')
    s = test()
    print('function:', s)

    • @non5309
      @non5309 Před rokem

      i = "1"
      def test(i):
      try:
      i = i + 1
      except:
      return i
      finally:
      print("finally")
      print(test(i))
      finally
      1
      Сначала файнали, а уж потом ретерн через исключение. Вот так выходит.

  • @wad600
    @wad600 Před rokem +1

    На курсах по Питону мне не рассказали про copy, deepcopy и я долго мучался на задачах со вложенными списками...

  • @mikhail_bogatyrev
    @mikhail_bogatyrev Před 4 lety +6

    Лекция отличная. Но звук все портит. Постоянные тихие паузы добивают.

  • @sfz4213
    @sfz4213 Před 10 měsíci

    👍👍👍

  • @jeremyundefined5035
    @jeremyundefined5035 Před 4 lety +14

    Очень жаль, что хеширование не было затронуто в полной мере, а было сказано только про то, что оно быстрее, нежели сравнение объектов. Здесь есть разные интересные штуки по типу почему hash(-1) == hash(-2) и другие. В любом случае, очень круто!)

    • @robertalaverdyan3150
      @robertalaverdyan3150 Před 2 lety

      Наоборот, сравнение объектов то есть сравнение их адресов быстрее - это сравнение указателей тогда как хеширование это не тривиальная, но быстрая функция поэтому сначала сравнение объектов потом их хеш значений.

    • @jeremyundefined5035
      @jeremyundefined5035 Před 2 lety

      @@robertalaverdyan3150 Я что-то не так понял? Сравнение объектов это как раз value equality, а не reference equality. a == b идентично a is b (т.е. object.__eq__) только в случае, если type(a).__eq__(a, b) возвращает NotImplemented

  • @atribolt
    @atribolt Před rokem

    блок try - finally проще рассматривать как объект. Тогда finally - это деструктор этого объекта и он выполнится при любом return внутри этого блока try.

  • @bennissimo
    @bennissimo Před 4 lety +37

    Жаль, что нет субтитров с вопросами.

    • @user-cc3bv1rq2f
      @user-cc3bv1rq2f Před 4 lety

      Да есть такой недостаток, вопросов не слышно.

  • @aalexren
    @aalexren Před 2 lety +2

    Лекция хорошая, познавательная, но со звуком беда.

  • @Dustwalker
    @Dustwalker Před 4 lety +11

    Так и не услышал причин почему в питоне может течь память...

    • @Dustwalker
      @Dustwalker Před 4 lety

      @@iloveudead Вы ж видите, что там фигня в популярном ответе написана, т.к. это не memory leak в классическом определении, а ситуации притянутые за уши...

    • @nekosora6036
      @nekosora6036 Před 3 lety

      @@Dustwalker а какое классическое определение?

    • @GLOBALeVGENIUS
      @GLOBALeVGENIUS Před 3 lety

      У меня в либе как-то была утечка памяти, когда я в регистраторе функций через декораторы хранил сами объекты функций, а не слабые ссылки на них.

    • @v_a_a_music
      @v_a_a_music Před 2 lety +5

      Основная фишка не столько в классической утечке памяти (когда память числится как занятая, хотя она не ниспользуется), сколько в том, что питон выделяет память сам, размечая ее на свои арены итд. (не знаю, насколько об этом сказано в лекции).
      Так вот. однажды размеченная питоном память в операционную систему не возвращается. То есть если вы загрузили гигабайт данных, а потом они вам стали не нужны, то в рамках вашего процесса на питоне эта память освободится, но для операционной системы будет выглядить так как будто вы по прежнему этот гигабайт используете, так как питон его уже разметил и не отдает.
      Поэтому когда сервис на питоне долго работает, он может со временем раздуваться по памяти из-за этого эффекта.
      Но вроде бы, это поведение пофиксили в новых версиях интерпретатора, но подробностей я не знаю))

  • @TheAgressor13
    @TheAgressor13 Před 10 měsíci

    спасибо, не все понятно в силу собственной необразованности, но очень интересно

    • @mar_kha
      @mar_kha Před 4 měsíci

      Здравствуйте,
      А сейчас как?

  • @senatortre7326
    @senatortre7326 Před 4 lety +1

    Шикарно. 🐍👍🏻

  • @dmitryilyushin5047
    @dmitryilyushin5047 Před rokem

    50:10 я проверил в 3.11 - так не работает, оба выдают True

  • @user-mo7ge4cw3x
    @user-mo7ge4cw3x Před 9 měsíci

    Хеши надо в таблице хранить, тогда это будет быстрая операция. А при каждом сравнении генерить хеши заново это будут тормоза, особенно если хеш функция переопределена.

  • @darkcreator_ru
    @darkcreator_ru Před 6 měsíci

    Почему это компиляция в байт код считается интерпретаций? К примеру в том же Java javac считается компилятором, хотя тоже преобразует в байт код.
    ru.wikipedia.org/wiki/Javac

  • @VitalyBelenky
    @VitalyBelenky Před 4 lety +2

    Валера 🔫

  • @abdujabbarmirkhalikov5480

    Очень интересные вопросы задают слушатели такое ощущение что там учились не начинающие или мидлы а уже сениоры которые очень не плохо разбираються в low level.

    • @viktor_borodin
      @viktor_borodin Před rokem

      Посмотрел немного, ощущение что просто достаточно немного си знать, мьютекс, чуть-чуть многопоточность, базовые структуры данных

  • @marekartist8441
    @marekartist8441 Před 3 lety

    ❤️

  • @user-wn2tf9lt7c
    @user-wn2tf9lt7c Před 3 měsíci

    Это точно первый урок для новичков?

  • @david_shiko
    @david_shiko Před 4 lety

    33:50 Не понимаю, как добавление нового массива indices помогает нам сделать упорядоенный массив. На слайде все выглядит логичным, но при коллизии нам придется выкручиваться, что бы сохранить порядок как я понимаю? Как то тема раскрыта не до конца. И Профит от новой структуры мне не понятен, превратить пцстые слоты в None и тем самым уменьшить их значение?
    P.s. Лекция огонь!

    • @dhvcc8182
      @dhvcc8182 Před 4 lety

      None меньше чем ["--", "--", ...]. На счет коллизий не скажу, но всё же без них дикт упорядочен

  • @amigo4884
    @amigo4884 Před 3 lety +1

    Singleton'ы всё таки не от минус пяти до двухста пятидесяти пяти, а от минус пяти до двухста пятидесяти шести включительно

  • @swimmwatch
    @swimmwatch Před 3 lety +1

    К сожалению вопросы от слушателей не записались (

  • @grehban
    @grehban Před 4 lety +5

    1:11:50 просто finally выполняется всегда первым, если он есть, потом уже выполнится элс
    Пример
    def func():
    try:
    pass
    except:
    pass
    else:
    return
    finally:
    print ('finally')
    print (func())
    >>>
    'finally'
    None

    • @someone_music
      @someone_music Před 3 lety +1

      Нет. В данном случае finally был первым только лишь потому, что в else у нас return, на котором управление передается наружу, а finally вызвать нужно в любом случае - вызываем сначала finally, а потом return.
      Если в else присутствует код, отличный от возврата, первым выполнится именно он. В момент return исполнится finally

    • @blacktopepo
      @blacktopepo Před 2 lety +2

      @@someone_music
      def ddd():
      try:
      10 / 1
      except:
      pass
      else:
      print('else')
      return 'else'
      finally:
      return 'финали'
      print(ddd())
      вывод:
      else
      финали

  • @user-pb5pd1oc5r
    @user-pb5pd1oc5r Před 2 lety +12

    Лектор: - Задавайте вопросы
    Люди: - Задают вопросы
    Лектор: - Не знаю, надо смотреть

    • @triti77
      @triti77 Před rokem +3

      Нельзя знать ответы на все вопросы и из этого не значит, что вовсе не нужно задавать вопросы

  • @sh.konstantin
    @sh.konstantin Před 4 lety +54

    увольте своего звукача. он очень любит компрессор. нельзя же так давить звук 🤦🏻‍♂️

  • @azamatkurbanov9067
    @azamatkurbanov9067 Před 3 lety +9

    Тема очень интересная, но лектор не умеет объяснять

  • @borismish3017
    @borismish3017 Před rokem

    Когда рассказывают про дикты вместо ифоф, а в иходниках яндекса используются эти самые ифы вместо диктов. То когда лекторы рассказывают прл высокий уровень вхождения в яндекс, а на деле в слитых исходниках кучи говнокода.

  • @daniellariga
    @daniellariga Před 4 lety +13

    сложно объясняет конечно...

  • @xychromosome6510
    @xychromosome6510 Před 4 lety +3

    Заук отвратительный. Первые 2 минуты и уже не хочу смотреть. Неужели нельзя было сделать звук идеальным? Организаторы? В каком веке живем?

  • @5elll960
    @5elll960 Před 4 lety +1

    ++

  • @hennosyhennosy4961
    @hennosyhennosy4961 Před 2 lety

    что там пищит на фоне??? звуком занимаеться кто то в этой компании

  • @ruslankrivoshein2893
    @ruslankrivoshein2893 Před 3 lety

    Приятно видеть, чем теперь занимается Клара Захаровна из "33 квадратных метра"

  • @harveyspecter5948
    @harveyspecter5948 Před 3 lety +1

    А что солист группы moby в РФ переехал?
    И давно он сменил профориентацию?

  • @mefodymo7456
    @mefodymo7456 Před rokem +1

    Честно говоря, мало что понятно из лекции
    Лекция для сеньерных сеньеров похоже

    • @viktor_borodin
      @viktor_borodin Před rokem

      Да не, просто нужно базовые структуры данных знать и си немного

    • @user-wn2tf9lt7c
      @user-wn2tf9lt7c Před 3 měsíci

      ​@@viktor_borodinz я только что прошла базовый курс и всё равно ничего не понятно

    • @viktor_borodin
      @viktor_borodin Před 3 měsíci

      @@user-wn2tf9lt7c вы можете попробовать спросить. Я могу попробовать объяснить

  • @serjbobrovsky1628
    @serjbobrovsky1628 Před 4 lety +2

    На вопрос про immutablte докладчик нёс пургу, но просил поправить.
    czcams.com/video/PxIqLgjtQ5Y/video.html
    class ImmutableDict(dict):
    def __setitem__(self, key, value):
    raise TypeError('Обломись')
    D = ImmutableDict({'foo': 1, 'bar': 2})
    print(D) # {'foo': 1, 'bar': 2}
    D['baz'] = 3 # TypeError
    # на самом деле надо сделать поболее, например переопределить update
    D.update({'baz': 3})
    print(D) # {'foo': 1, 'bar': 2, 'baz': 3}

    • @diletech473
      @diletech473 Před 3 lety

      всё это далеко до академического стиля, но люди все умные собрались, не академики конечно, но сове "низовое" знают и им приятно пообщаться, тем более формат и время не располагают к точному стилю с определением всяких дефиниций и тезисов

  • @user-fo6el3kv1f
    @user-fo6el3kv1f Před rokem

    у яндекса большие проблемы. Лекторы очень плохо преподносят материал, да и сами живут на ниточке, еще чуток и умрет. Берите пример с Хирьянова, эмоции, радость в каждом слове.

  • @17yochurchcat9
    @17yochurchcat9 Před 2 lety +5

    Отвратительный доклад. Темы вообще не раскрыты.

  • @user-ue4zz1bd4r
    @user-ue4zz1bd4r Před rokem +1

    Лекция ужасна с первых минут. Плохо подготовился лектор

  • @niwgud
    @niwgud Před rokem

    Господи, ну и каша, "питон кладёт функцию на стек", как это можно понять то вообще если нет опыта в си и ассемблере...
    Понимать и уметь рассказать - разные навыки.

    • @viktor_borodin
      @viktor_borodin Před rokem +1

      Ну стек же не только в си)

  • @user-dx8st6lr8q
    @user-dx8st6lr8q Před 3 lety

    Драндулет для квантовых вычислений недооценён инженерами на процентов 90-95. От его возможностей. Вообще этот механизм лучше назвать кубитрон. А инженеров которые пытаются его программироваться - кубитистами. В будущем, когда сменится несколько поколений кубитистов, лет через 50-80, программирование такого устройства будет называться балансировкой кубитирования под конкретные задачи, так как корневые устройства под компилирование, но наверное разной мощности, будут стандартными. Понадобиться развить новую промышленную отрасль, в области света.
    Сейчас идёт переходный период когда «железо» не соответствует возможностям квантовых импульсов, на том и топчутся. С нынешним «железом» невозможно проводить точные квантовые измерения. Соответственно возможности недооценены. В Китае попробовали установить повторители, молодцы конечно, но и они дают минимальный эффект. Нет, конечно пусть пробуют, но таким путём всё будет происходить очень медленно. Может лет через 25 что то и появится.
    Беда Силиконовой Долины что они работают бинарной технологией программирования. А для объёмной стандартизации требуется другое оборудование. А это усилие под силу только Россиянам. Кроме того есть возможность создавать «драндулеты» для вычислений на сверхлёгких частицах. Возможности выше квантовых на порядок.
    www.Maharishi-TM.ru

  • @hammikant
    @hammikant Před rokem

    Лектор слабый, уверен, что сильный разработчик, но выступает плохо.

  • @user-ft6zh8ny9i
    @user-ft6zh8ny9i Před 2 lety

    В 23 году вся страна будет изучать С++. Потому что он будет очень лаконичным и крутым.

  • @user-ft6zh8ny9i
    @user-ft6zh8ny9i Před 2 lety

    Вся страна изучала Пайтон, а все самые крутые и сверхбыстрые программы все равно пишут на С++. Ха-ха. Продолжайте.