В моем ТГ канале уже висит правильный ответ про вопрос про `COPY` и `TO_BOOL`: t.me/opensource_findings/856 И другие дополнительные материалы тоже там!
Спасибо огромное, автору. Уникальный контент, изучал работу интерпретатора питона по книге Энтони Шоу, но там ограниченная информация, долго искал какого-то умного человека, кто объяснит подробно, что происходит под капотом. Автор, не останавливайся, продолжай делиться знаниями! Хотелось бы узнать в будущем,как работают декораторы, дескрипторы и тд. Спасибо!
Никита, очень полезная лекция про сравнения большое спасибо. Пару просьб на будущее развитие: 1. Хочеться больше понимания об Python Style Guide и о техниках как ему лучше всего соответствовать 2. Про слоты вообще не понимаю, что за концепция такая... Заранее благодарен, С Уважением, Макс.
33:42 не совсем понятно для чего все-таки PyObjects_IsTrue ведь выражение a==b и так всегда будет булевым, для чего его как-то собо "готовить" к использованию в if?
26:18 чтобы оператор сравнения возвращал результат метаметода, не приведенный к bool? в начале было, про дсл Кстати, про то, что некоторые операторы сравнения могут возвращать не bool не знал. ИМХО было бы лучше, если бы and и or тоже могли возвращать что угодно, orm были бы красивее:)
Прикольно, что total_ordering переназначает только обжектовые методы. То есть при наследовании работать не будет без напильника ) ```from functools import total_ordering @total_ordering class A(int): def __le__(self): return True print(A.__dict__) {'__module__': '__main__', '__le__': , '__dict__': , '__doc__': None}```
Стоило бы объяснить как сравнения работают с учетом наследования. То, что типы часто игнорируются при сравнении встроенных типов - было как-то походя замечено. ``True == 1 == 1.0 == complex(1)``.
В моем ТГ канале уже висит правильный ответ про вопрос про `COPY` и `TO_BOOL`: t.me/opensource_findings/856 И другие дополнительные материалы тоже там!
Спасибо огромное, автору. Уникальный контент, изучал работу интерпретатора питона по книге Энтони Шоу, но там ограниченная информация, долго искал какого-то умного человека, кто объяснит подробно, что происходит под капотом. Автор, не останавливайся, продолжай делиться знаниями! Хотелось бы узнать в будущем,как работают декораторы, дескрипторы и тд. Спасибо!
Спасибо, продолжаю! Есть в текстом виде в телеге: t.me/opensource_findings
Спасибо за курс. реально интересные видео
Никита, очень полезная лекция про сравнения большое спасибо. Пару просьб на будущее развитие:
1. Хочеться больше понимания об Python Style Guide и о техниках как ему лучше всего соответствовать
2. Про слоты вообще не понимаю, что за концепция такая...
Заранее благодарен,
С Уважением,
Макс.
Капец он умный, такого core контента наверное во всем интернете не найдешь
Найдешь, конечно, я ведь просто рассказываю про исходники, а ведь кто-то их написал :)
pov: прошли только базовые типы и операторы в питоне
Страшно что будет дальше...
33:42 не совсем понятно для чего все-таки PyObjects_IsTrue
ведь выражение a==b и так всегда будет булевым, для чего его как-то собо "готовить" к использованию в if?
не всегда `True`, можно вернуть любой объект:
```
>>> class A:
... def __eq__(self, other):
... return 15
...
>>> A() == A()
15
```
26:18 чтобы оператор сравнения возвращал результат метаметода, не приведенный к bool? в начале было, про дсл
Кстати, про то, что некоторые операторы сравнения могут возвращать не bool не знал. ИМХО было бы лучше, если бы and и or тоже могли возвращать что угодно, orm были бы красивее:)
`and` и `or` только переопределить нельзя, а так они могут вернуть любые значения. `assert 5 and 6 == 6`
В своё время был удивлён узнав, что логические операторы не приводят явно к True:
>>> 'a' or True
'a'
Прикольно, что total_ordering переназначает только обжектовые методы. То есть при наследовании работать не будет без напильника )
```from functools import total_ordering
@total_ordering
class A(int):
def __le__(self):
return True
print(A.__dict__)
{'__module__': '__main__', '__le__': , '__dict__': , '__doc__': None}```
наследовать билтины вообще сложно
Стоило бы объяснить как сравнения работают с учетом наследования.
То, что типы часто игнорируются при сравнении встроенных типов - было как-то походя замечено. ``True == 1 == 1.0 == complex(1)``.
Хорошее дополнение!
Смогу рассказать про них, когда буду про `__hash__` рассказывать
не смог найти, где С генерирует разные ID для разных платформ
github.com/python/cpython/blob/417c130ba55ca29e132808a0a500329f73b6ec41/Objects/longobject.c#L1352-L1363 вот он
В простом питоне в 100 раз больше подводных камней и мусора чем в сложном расте