Лучший курс по Python 8: bytes

แชร์
ฝัง
  • เผยแพร่เมื่อ 14 พ.ย. 2024

ความคิดเห็น • 11

  • @MaxZaikin
    @MaxZaikin 19 วันที่ผ่านมา +1

    Никита спасибо, отличное видео!

  • @cloudkserg11
    @cloudkserg11 2 หลายเดือนก่อน

    Продолжай в том же духе. Реально хорошо получается. Будет круто если как нить про typing расскажешь, но я думаю все запланировано, так что удачи

  • @GbyG_Ruslan
    @GbyG_Ruslan 2 หลายเดือนก่อน

    Это реально лучший курс я пишу уже не один год, но никогда особо не вникал как оно работает под капотом.

  • @dashberlin6682
    @dashberlin6682 3 หลายเดือนก่อน +1

    Ух, как же я обожаю данный курс, и он действительно самый лучший, я подозревал что bytes кеширует хеши, видимо и со str так же. Интересно посмотреть видео и по другим контейнерам, и что-то мне подсказывает что тот же set comprehension сначало загоняет данные в обычный контейнер (чтоб не рехешировать), а затем определяет capacity, и все вгоняет в хэш таблицу, угадал?

    • @sobolevn
      @sobolevn  3 หลายเดือนก่อน

      ```
      typedef struct {
      PyObject *key;
      Py_hash_t hash; /* Cached hash code of the key */
      } setentry;
      ```
      Сам по себе set-comprehension не отличается особо от set-literal. в первом случае будет `BUILD_SET` + `SET_ADD` (вызывает `PySet_Add`, во втором просто `BUILD_SET` с известными уже данными, внутри все равно вызывается `PySet_Add`. Хеш в `Py_hash_t hash` пересчитывается при каждом добавлении, см `static int set_add_key(PySetObject *so, PyObject *key)`
      Спасибо за вопрос! О set еще поговорим! :)

  • @antropod
    @antropod 3 หลายเดือนก่อน +3

    Все знают что единственное отличие 2 и 3 питона - это print

  • @dashberlin6682
    @dashberlin6682 3 หลายเดือนก่อน

    И вот такой вопрос, почему отсутствует under метод __min__ и __max__, просто если работать с математическими контейнерами например numpy или какие нибудь vec2, хочется получить например: min(vec2(1.0, 1,5), vec(-0.5, 2.5)) -> vec(-0.5, 1.5), а не минимальный float, просто на с++ с этим все окей. Просто этом момент путает и его можно было-бы улучшить

    • @sobolevn
      @sobolevn  3 หลายเดือนก่อน

      Если `__gt__` и другие методы сравнения для `min` / `max`. Пример:
      ```python
      >>> class A:
      ... def __gt__(self, other):
      ... print(f'> {other}')
      ... return True
      ...
      >>> min([A(), 1])
      > 1
      1
      ```

    • @dashberlin6682
      @dashberlin6682 3 หลายเดือนก่อน

      @@sobolevn скорей всего тебе не приходилось работать с линейной алгеброй, если в min засунуть два вектора, то оно должно создать новый объект, который поиндексно сравниваеться, и оно должно возвращать новый объект из результата сравнений, в том же numpy для таких целей есть одноименная функция, что как по мне немного не правильно, и появление under методов __min__, __max__ решило бы эту проблему:
      ```
      class vec2:
      def __init__(self, x, y):
      self.x = x
      self.y = y

      def min(self, other):
      return vec2(min(self.x, other.x), min(self.y, other.y))

      def __iter__(self):
      return iter((self.x, self.y))

      def __str__(self):
      return f'x={self.x}, y={self.y}'

      def __gt__(self, other):
      return True

      v1 = vec2(1.5, 2.5)
      v2 = vec2(-0.5, 5.5)
      print('min from one arg = ', min(v1)) # 1.5 - good
      print('method = ', v1.min(v2)) # x=-0.5, y=2.5 - good
      print('under_ = ', min(v1, v2)) # x=-0.5, y=5.5 - bad
      ```

  • @МихаилКасаткин-р6д
    @МихаилКасаткин-р6д 3 หลายเดือนก่อน

    Лекция классная, но звук очень тихий.

    • @dashberlin6682
      @dashberlin6682 3 หลายเดือนก่อน

      Всегда вижу такой комментарий под роликом данного автора, это типо мем такой? Вроде слышно отлично.