1:11:50 просто finally выполняется всегда первым, если он есть, потом уже выполнится элс Пример def func(): try: pass except: pass else: return finally: print ('finally') print (func()) >>> 'finally' None
Нет. В данном случае finally был первым только лишь потому, что в else у нас return, на котором управление передается наружу, а finally вызвать нужно в любом случае - вызываем сначала finally, а потом return. Если в else присутствует код, отличный от возврата, первым выполнится именно он. В момент return исполнится finally
по поводу вопроса к 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)
i = "1" def test(i): try: i = i + 1 except: return i finally: print("finally") print(test(i)) finally 1 Сначала файнали, а уж потом ретерн через исключение. Вот так выходит.
Почему это компиляция в байт код считается интерпретаций? К примеру в том же Java javac считается компилятором, хотя тоже преобразует в байт код. ru.wikipedia.org/wiki/Javac
блок try - finally проще рассматривать как объект. Тогда finally - это деструктор этого объекта и он выполнится при любом return внутри этого блока try.
Очень жаль, что хеширование не было затронуто в полной мере, а было сказано только про то, что оно быстрее, нежели сравнение объектов. Здесь есть разные интересные штуки по типу почему hash(-1) == hash(-2) и другие. В любом случае, очень круто!)
Наоборот, сравнение объектов то есть сравнение их адресов быстрее - это сравнение указателей тогда как хеширование это не тривиальная, но быстрая функция поэтому сначала сравнение объектов потом их хеш значений.
@@robertalaverdyan3150 Я что-то не так понял? Сравнение объектов это как раз value equality, а не reference equality. a == b идентично a is b (т.е. object.__eq__) только в случае, если type(a).__eq__(a, b) возвращает NotImplemented
Хеши надо в таблице хранить, тогда это будет быстрая операция. А при каждом сравнении генерить хеши заново это будут тормоза, особенно если хеш функция переопределена.
@@iloveudead Вы ж видите, что там фигня в популярном ответе написана, т.к. это не memory leak в классическом определении, а ситуации притянутые за уши...
Основная фишка не столько в классической утечке памяти (когда память числится как занятая, хотя она не ниспользуется), сколько в том, что питон выделяет память сам, размечая ее на свои арены итд. (не знаю, насколько об этом сказано в лекции). Так вот. однажды размеченная питоном память в операционную систему не возвращается. То есть если вы загрузили гигабайт данных, а потом они вам стали не нужны, то в рамках вашего процесса на питоне эта память освободится, но для операционной системы будет выглядить так как будто вы по прежнему этот гигабайт используете, так как питон его уже разметил и не отдает. Поэтому когда сервис на питоне долго работает, он может со временем раздуваться по памяти из-за этого эффекта. Но вроде бы, это поведение пофиксили в новых версиях интерпретатора, но подробностей я не знаю))
33:50 Не понимаю, как добавление нового массива indices помогает нам сделать упорядоенный массив. На слайде все выглядит логичным, но при коллизии нам придется выкручиваться, что бы сохранить порядок как я понимаю? Как то тема раскрыта не до конца. И Профит от новой структуры мне не понятен, превратить пцстые слоты в None и тем самым уменьшить их значение? P.s. Лекция огонь!
Очень интересные вопросы задают слушатели такое ощущение что там учились не начинающие или мидлы а уже сениоры которые очень не плохо разбираються в low level.
Когда рассказывают про дикты вместо ифоф, а в иходниках яндекса используются эти самые ифы вместо диктов. То когда лекторы рассказывают прл высокий уровень вхождения в яндекс, а на деле в слитых исходниках кучи говнокода.
у яндекса большие проблемы. Лекторы очень плохо преподносят материал, да и сами живут на ниточке, еще чуток и умрет. Берите пример с Хирьянова, эмоции, радость в каждом слове.
Господи, ну и каша, "питон кладёт функцию на стек", как это можно понять то вообще если нет опыта в си и ассемблере... Понимать и уметь рассказать - разные навыки.
На вопрос про immutablte докладчик нёс пургу, но просил поправить. th-cam.com/video/PxIqLgjtQ5Y/w-d-xo.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}
всё это далеко до академического стиля, но люди все умные собрались, не академики конечно, но сове "низовое" знают и им приятно пообщаться, тем более формат и время не располагают к точному стилю с определением всяких дефиниций и тезисов
Драндулет для квантовых вычислений недооценён инженерами на процентов 90-95. От его возможностей. Вообще этот механизм лучше назвать кубитрон. А инженеров которые пытаются его программироваться - кубитистами. В будущем, когда сменится несколько поколений кубитистов, лет через 50-80, программирование такого устройства будет называться балансировкой кубитирования под конкретные задачи, так как корневые устройства под компилирование, но наверное разной мощности, будут стандартными. Понадобиться развить новую промышленную отрасль, в области света. Сейчас идёт переходный период когда «железо» не соответствует возможностям квантовых импульсов, на том и топчутся. С нынешним «железом» невозможно проводить точные квантовые измерения. Соответственно возможности недооценены. В Китае попробовали установить повторители, молодцы конечно, но и они дают минимальный эффект. Нет, конечно пусть пробуют, но таким путём всё будет происходить очень медленно. Может лет через 25 что то и появится. Беда Силиконовой Долины что они работают бинарной технологией программирования. А для объёмной стандартизации требуется другое оборудование. А это усилие под силу только Россиянам. Кроме того есть возможность создавать «драндулеты» для вычислений на сверхлёгких частицах. Возможности выше квантовых на порядок. www.Maharishi-TM.ru
Вопросы аудитории очень хорошие, разбавляют лекцию хорошо
Хороший материал. Я не новичок в питоне или Си но материал дал начало для глубокого узучения Cpython.
Лекция отличная. По звуку небольшое замечание, очень неестественно звучит, когда фоновые шумы в промежутках между фразами вырезаны.
да там свист на фоне. Они видать его выпилить гейтом пытались. Но лучше бы уж частоту замьютили свиста. Реально сложно слушать когда вот так дергает
Да, звук адский
Очень полезная информация. Спасибо.
1:11:50 просто finally выполняется всегда первым, если он есть, потом уже выполнится элс
Пример
def func():
try:
pass
except:
pass
else:
return
finally:
print ('finally')
print (func())
>>>
'finally'
None
Нет. В данном случае finally был первым только лишь потому, что в else у нас return, на котором управление передается наружу, а finally вызвать нужно в любом случае - вызываем сначала finally, а потом return.
Если в else присутствует код, отличный от возврата, первым выполнится именно он. В момент return исполнится finally
@@someone_music
def ddd():
try:
10 / 1
except:
pass
else:
print('else')
return 'else'
finally:
return 'финали'
print(ddd())
вывод:
else
финали
по поводу вопроса к 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)
i = "1"
def test(i):
try:
i = i + 1
except:
return i
finally:
print("finally")
print(test(i))
finally
1
Сначала файнали, а уж потом ретерн через исключение. Вот так выходит.
Спасибо! Полезная лекция. Хороший вход в Python для знакомых с Си.
Почему это компиляция в байт код считается интерпретаций? К примеру в том же Java javac считается компилятором, хотя тоже преобразует в байт код.
ru.wikipedia.org/wiki/Javac
Лекция первоклассная, большое спасибо!)
Жаль, что нет субтитров с вопросами.
Да есть такой недостаток, вопросов не слышно.
На курсах по Питону мне не рассказали про copy, deepcopy и я долго мучался на задачах со вложенными списками...
блок try - finally проще рассматривать как объект. Тогда finally - это деструктор этого объекта и он выполнится при любом return внутри этого блока try.
Очень жаль, что хеширование не было затронуто в полной мере, а было сказано только про то, что оно быстрее, нежели сравнение объектов. Здесь есть разные интересные штуки по типу почему hash(-1) == hash(-2) и другие. В любом случае, очень круто!)
Наоборот, сравнение объектов то есть сравнение их адресов быстрее - это сравнение указателей тогда как хеширование это не тривиальная, но быстрая функция поэтому сначала сравнение объектов потом их хеш значений.
@@robertalaverdyan3150 Я что-то не так понял? Сравнение объектов это как раз value equality, а не reference equality. a == b идентично a is b (т.е. object.__eq__) только в случае, если type(a).__eq__(a, b) возвращает NotImplemented
50:10 я проверил в 3.11 - так не работает, оба выдают True
Хеши надо в таблице хранить, тогда это будет быстрая операция. А при каждом сравнении генерить хеши заново это будут тормоза, особенно если хеш функция переопределена.
спасибо, не все понятно в силу собственной необразованности, но очень интересно
Здравствуйте,
А сейчас как?
Лекция отличная. Но звук все портит. Постоянные тихие паузы добивают.
Так и не услышал причин почему в питоне может течь память...
@@iloveudead Вы ж видите, что там фигня в популярном ответе написана, т.к. это не memory leak в классическом определении, а ситуации притянутые за уши...
@@Dustwalker а какое классическое определение?
У меня в либе как-то была утечка памяти, когда я в регистраторе функций через декораторы хранил сами объекты функций, а не слабые ссылки на них.
Основная фишка не столько в классической утечке памяти (когда память числится как занятая, хотя она не ниспользуется), сколько в том, что питон выделяет память сам, размечая ее на свои арены итд. (не знаю, насколько об этом сказано в лекции).
Так вот. однажды размеченная питоном память в операционную систему не возвращается. То есть если вы загрузили гигабайт данных, а потом они вам стали не нужны, то в рамках вашего процесса на питоне эта память освободится, но для операционной системы будет выглядить так как будто вы по прежнему этот гигабайт используете, так как питон его уже разметил и не отдает.
Поэтому когда сервис на питоне долго работает, он может со временем раздуваться по памяти из-за этого эффекта.
Но вроде бы, это поведение пофиксили в новых версиях интерпретатора, но подробностей я не знаю))
увольте своего звукача. он очень любит компрессор. нельзя же так давить звук 🤦🏻♂️
Лекция хорошая, познавательная, но со звуком беда.
Это точно первый урок для новичков?
33:50 Не понимаю, как добавление нового массива indices помогает нам сделать упорядоенный массив. На слайде все выглядит логичным, но при коллизии нам придется выкручиваться, что бы сохранить порядок как я понимаю? Как то тема раскрыта не до конца. И Профит от новой структуры мне не понятен, превратить пцстые слоты в None и тем самым уменьшить их значение?
P.s. Лекция огонь!
None меньше чем ["--", "--", ...]. На счет коллизий не скажу, но всё же без них дикт упорядочен
Очень интересные вопросы задают слушатели такое ощущение что там учились не начинающие или мидлы а уже сениоры которые очень не плохо разбираються в low level.
Посмотрел немного, ощущение что просто достаточно немного си знать, мьютекс, чуть-чуть многопоточность, базовые структуры данных
Singleton'ы всё таки не от минус пяти до двухста пятидесяти пяти, а от минус пяти до двухста пятидесяти шести включительно
Лектор: - Задавайте вопросы
Люди: - Задают вопросы
Лектор: - Не знаю, надо смотреть
Нельзя знать ответы на все вопросы и из этого не значит, что вовсе не нужно задавать вопросы
К сожалению вопросы от слушателей не записались (
Когда рассказывают про дикты вместо ифоф, а в иходниках яндекса используются эти самые ифы вместо диктов. То когда лекторы рассказывают прл высокий уровень вхождения в яндекс, а на деле в слитых исходниках кучи говнокода.
сложно объясняет конечно...
он вообще не объясняет 😆
что там пищит на фоне??? звуком занимаеться кто то в этой компании
А что солист группы moby в РФ переехал?
И давно он сменил профориентацию?
Это Клара Захаровна
Тема очень интересная, но лектор не умеет объяснять
Заук отвратительный. Первые 2 минуты и уже не хочу смотреть. Неужели нельзя было сделать звук идеальным? Организаторы? В каком веке живем?
Валера 🔫
Приятно видеть, чем теперь занимается Клара Захаровна из "33 квадратных метра"
Лекция ужасна с первых минут. Плохо подготовился лектор
Честно говоря, мало что понятно из лекции
Лекция для сеньерных сеньеров похоже
Да не, просто нужно базовые структуры данных знать и си немного
@@viktor_borodinz я только что прошла базовый курс и всё равно ничего не понятно
@@Ксения-х6й3р вы можете попробовать спросить. Я могу попробовать объяснить
Шикарно. 🐍👍🏻
❤️
у яндекса большие проблемы. Лекторы очень плохо преподносят материал, да и сами живут на ниточке, еще чуток и умрет. Берите пример с Хирьянова, эмоции, радость в каждом слове.
Отвратительный доклад. Темы вообще не раскрыты.
Господи, ну и каша, "питон кладёт функцию на стек", как это можно понять то вообще если нет опыта в си и ассемблере...
Понимать и уметь рассказать - разные навыки.
Ну стек же не только в си)
На вопрос про immutablte докладчик нёс пургу, но просил поправить.
th-cam.com/video/PxIqLgjtQ5Y/w-d-xo.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}
всё это далеко до академического стиля, но люди все умные собрались, не академики конечно, но сове "низовое" знают и им приятно пообщаться, тем более формат и время не располагают к точному стилю с определением всяких дефиниций и тезисов
Лектор слабый, уверен, что сильный разработчик, но выступает плохо.
++
В 23 году вся страна будет изучать С++. Потому что он будет очень лаконичным и крутым.
Вся страна изучала Пайтон, а все самые крутые и сверхбыстрые программы все равно пишут на С++. Ха-ха. Продолжайте.
Драндулет для квантовых вычислений недооценён инженерами на процентов 90-95. От его возможностей. Вообще этот механизм лучше назвать кубитрон. А инженеров которые пытаются его программироваться - кубитистами. В будущем, когда сменится несколько поколений кубитистов, лет через 50-80, программирование такого устройства будет называться балансировкой кубитирования под конкретные задачи, так как корневые устройства под компилирование, но наверное разной мощности, будут стандартными. Понадобиться развить новую промышленную отрасль, в области света.
Сейчас идёт переходный период когда «железо» не соответствует возможностям квантовых импульсов, на том и топчутся. С нынешним «железом» невозможно проводить точные квантовые измерения. Соответственно возможности недооценены. В Китае попробовали установить повторители, молодцы конечно, но и они дают минимальный эффект. Нет, конечно пусть пробуют, но таким путём всё будет происходить очень медленно. Может лет через 25 что то и появится.
Беда Силиконовой Долины что они работают бинарной технологией программирования. А для объёмной стандартизации требуется другое оборудование. А это усилие под силу только Россиянам. Кроме того есть возможность создавать «драндулеты» для вычислений на сверхлёгких частицах. Возможности выше квантовых на порядок.
www.Maharishi-TM.ru
👍👍👍