Для чего? (ч.2)
Оператор присваивания i = 10 никогда не влияет на итерации цикла из-за способа работы циклов for в Python. Перед началом каждой итерации следующий элемент, предоставляемый итератором (range(4) в данном случае) распаковывается и присваивается переменным целевого списка (i в данном случае).
Оператор присваивания i = 10 никогда не влияет на итерации цикла из-за способа работы циклов for в Python. Перед началом каждой итерации следующий элемент, предоставляемый итератором (range(4) в данном случае) распаковывается и присваивается переменным целевого списка (i в данном случае).
Несоответствие во времени оценки (ч.1)
В выражении генератора in предложение вычисляется во время объявления, но условное предложение вычисляется во время выполнения.
Итак, перед выполнением, array повторно присваивается списку [2, 8, 22], и поскольку из 1, 8 и 15 только количество 8 больше 0, генератор выдает только 8.
В выражении генератора in предложение вычисляется во время объявления, но условное предложение вычисляется во время выполнения.
Итак, перед выполнением, array повторно присваивается списку [2, 8, 22], и поскольку из 1, 8 и 15 только количество 8 больше 0, генератор выдает только 8.
Несоответствие во времени оценки (ч.2)
Различия в выходных данных g1 и g2 во второй части обусловлены тем, как переменным array_1 и array_2 повторно присваиваются значения.
В первом случае, array_1 привязан к новому объекту [1,2,3,4,5] и поскольку in предложение вычисляется во время объявления, оно все еще ссылается на старый объект [1,2,3,4] (который не уничтожается).
Во втором случае назначение фрагмента для array_2 обновляет тот же самый старый объект [1,2,3,4] до [1,2,3,4,5]. Следовательно, g2 и array_2 все еще имеют ссылку на один и тот же объект (который теперь был обновлен до [1,2,3,4,5]).
Различия в выходных данных g1 и g2 во второй части обусловлены тем, как переменным array_1 и array_2 повторно присваиваются значения.
В первом случае, array_1 привязан к новому объекту [1,2,3,4,5] и поскольку in предложение вычисляется во время объявления, оно все еще ссылается на старый объект [1,2,3,4] (который не уничтожается).
Во втором случае назначение фрагмента для array_2 обновляет тот же самый старый объект [1,2,3,4] до [1,2,3,4,5]. Следовательно, g2 и array_2 все еще имеют ссылку на один и тот же объект (который теперь был обновлен до [1,2,3,4,5]).
Несоответствие во времени оценки (ч.3)
Хорошо, следуя логике, обсуждавшиеся до сих пор, не должно ли значение list(gen) в третьем фрагменте быть [11, 21, 31, 12, 22, 32, 13, 23, 33]? (потому что array_3 и array_4 будут вести себя точно так же, как array_1). Причина, по которой были обновлены (только) array_4 значения, объясняется в PEP-289.
Немедленно вычисляется только самое внешнее выражение for, остальные выражения откладываются до запуска генератора.
Хорошо, следуя логике, обсуждавшиеся до сих пор, не должно ли значение list(gen) в третьем фрагменте быть [11, 21, 31, 12, 22, 32, 13, 23, 33]? (потому что array_3 и array_4 будут вести себя точно так же, как array_1). Причина, по которой были обновлены (только) array_4 значения, объясняется в PEP-289.
Немедленно вычисляется только самое внешнее выражение for, остальные выражения откладываются до запуска генератора.
У Яндекс Практикума есть бесплатный курс по основам анализа данных. В нём забавный интерактивный сюжет и много практики: четыре реальных кейса из разных областей. Вам предстоит:
— выяснить причину массовой поломки гаджетов,
— проверить окупаемость рекламы мобильного приложения,
— выбрать стратегию развития ИИ-стартапа,
— оценить эффективность роботов в службе поддержки.
На курсе вы напишете первый код на Python и поймёте, чем занимаются специалисты в сфере.
→ Приходите учиться бесплатно
— выяснить причину массовой поломки гаджетов,
— проверить окупаемость рекламы мобильного приложения,
— выбрать стратегию развития ИИ-стартапа,
— оценить эффективность роботов в службе поддержки.
На курсе вы напишете первый код на Python и поймёте, чем занимаются специалисты в сфере.
→ Приходите учиться бесплатно
is not ... не является is (not ...)
is not это один двоичный оператор, и его поведение отличается от использования is и not разделенных.
is not вычисляется, False если переменные по обе стороны от оператора указывают на один и тот же объект и True в противном случае.
В примере (not None) вычисляется как True, поскольку значение None находится False в логическом контексте, поэтому выражение становится 'something' is True.
is not это один двоичный оператор, и его поведение отличается от использования is и not разделенных.
is not вычисляется, False если переменные по обе стороны от оператора указывают на один и тот же объект и True в противном случае.
В примере (not None) вычисляется как True, поскольку значение None находится False в логическом контексте, поэтому выражение становится 'something' is True.
Обучаемся дизайну целых 6 месяцев за 0₽.
Лучший способ понять подойдет ли вам дизайн-профессия — попробовать её на практике. Ребята из Yudaev School дают вам такую возможность.
Оформите обучение в рассрочку и платите за обучение через целых 6 месяцев, за которые вы сможете основательно понять подойдет ли вам профессия или нет. Решите продолжить обучаться дальше — школа гарантирует вам трудоустройство у своих партнеров с зп на старте от 60 000₽.
Записаться на обучение: https://clck.ru/34CqpN
Лучший способ понять подойдет ли вам дизайн-профессия — попробовать её на практике. Ребята из Yudaev School дают вам такую возможность.
Оформите обучение в рассрочку и платите за обучение через целых 6 месяцев, за которые вы сможете основательно понять подойдет ли вам профессия или нет. Решите продолжить обучаться дальше — школа гарантирует вам трудоустройство у своих партнеров с зп на старте от 60 000₽.
Записаться на обучение: https://clck.ru/34CqpN
Крестики-нолики, где X побеждает с первой попытки!
Когда мы инициализируем row переменную, эта визуализация объясняет, что происходит в памяти.
И когда board инициализируется путем умножения row, вот что происходит внутри памяти (каждый из элементов board[0], board[1] и board[2] является ссылкой на один и тот же список, на который ссылается row).
Мы можем избежать этого сценария здесь, не используя row переменную для генерации board.
Когда мы инициализируем row переменную, эта визуализация объясняет, что происходит в памяти.
И когда board инициализируется путем умножения row, вот что происходит внутри памяти (каждый из элементов board[0], board[1] и board[2] является ссылкой на один и тот же список, на который ссылается row).
Мы можем избежать этого сценария здесь, не используя row переменную для генерации board.
Переменная Шредингера (ч.2)
При определении функции внутри цикла, которая использует переменную цикла в своем теле, закрытие функции цикла привязывается к переменной, а не к ее значению. Функция ищет x в окружающем контексте, вместо того, чтобы использовать значение x во время создания функции. Итак, все функции используют для вычислений последнее значение, присвоенное переменной. Мы можем видеть, что он использует x из окружающего контекста (т.е. не локальную переменную) с:
При определении функции внутри цикла, которая использует переменную цикла в своем теле, закрытие функции цикла привязывается к переменной, а не к ее значению. Функция ищет x в окружающем контексте, вместо того, чтобы использовать значение x во время создания функции. Итак, все функции используют для вычислений последнее значение, присвоенное переменной. Мы можем видеть, что он использует x из окружающего контекста (т.е. не локальную переменную) с:
⚡️ Турция раздаёт 2456 билетов бесплатно. Взяли и поехали. А в 5-звездочном отеле можно пожить бесплатно — надо просто использовать специальный код. Кстати, билет в любую страну можно купить с 90% скидкой — но об этом не говорят.
И такие лазейки публикуют в Travel Media. Это лучший канал про путешествия, визы и заграницу.
Внутри: как летать по ценам сотрудников, что сделать, чтобы Airbnb бесплатно дал жилье и как путешествовать без заграника.
Лето — уже близко. Дерзайте: Travel Media.
И такие лазейки публикуют в Travel Media. Это лучший канал про путешествия, визы и заграницу.
Внутри: как летать по ценам сотрудников, что сделать, чтобы Airbnb бесплатно дал жилье и как путешествовать без заграника.
Лето — уже близко. Дерзайте: Travel Media.
Переменная Шредингера (ч.3)
Поскольку x это глобальное значение, мы можем изменить значение, которое funcs будет искать и возвращать, обновив x.
Чтобы получить желаемое поведение, вы можете передать переменную цикла в качестве именованной переменной в функцию. Почему это работает? Потому что это определит переменную внутри области видимости функции. Он больше не будет обращаться к окружающей (глобальной) области видимости для поиска значений переменных, но создаст локальную переменную, которая хранит значение x на данный момент времени.
Поскольку x это глобальное значение, мы можем изменить значение, которое funcs будет искать и возвращать, обновив x.
Чтобы получить желаемое поведение, вы можете передать переменную цикла в качестве именованной переменной в функцию. Почему это работает? Потому что это определит переменную внутри области видимости функции. Он больше не будет обращаться к окружающей (глобальной) области видимости для поиска значений переменных, но создаст локальную переменную, которая хранит значение x на данный момент времени.
Проблема с куриным яйцом (ч.1)
Итак, какой "окончательный" базовый класс?
type это метакласс в Python. Все является object на Python, который включает в себя классы, а также их объекты (экземпляры). Класс type - это метакласс class object, и каждый класс (включая type) прямо или косвенно унаследован от object.
Итак, какой "окончательный" базовый класс?
type это метакласс в Python. Все является object на Python, который включает в себя классы, а также их объекты (экземпляры). Класс type - это метакласс class object, и каждый класс (включая type) прямо или косвенно унаследован от object.
Нейросети сейчас — как интернет в 1990 году. Тот, кто первым в них разберется — сможет что угодно и сорвёт куш.
Сами посмотрите: MidJourney рисует кручего любого дизайнера, ChatGPT сделает всю работу за вас, а DeepMind умеет лечить как врач.
А чтобы разобраться уже сегодня — держите в подписках Киллер-фича. Это лучший канал про технологии, ИИ и нейросети.
Там на пальцах рассказывают, как заставить нейронки работать на вас, как использовать ChatGPT и что не так с новым ИИ от Google.
Подписывайтесь, такие знания в 2023 году — на вес золота: Киллер-фича.
Сами посмотрите: MidJourney рисует кручего любого дизайнера, ChatGPT сделает всю работу за вас, а DeepMind умеет лечить как врач.
А чтобы разобраться уже сегодня — держите в подписках Киллер-фича. Это лучший канал про технологии, ИИ и нейросети.
Там на пальцах рассказывают, как заставить нейронки работать на вас, как использовать ChatGPT и что не так с новым ИИ от Google.
Подписывайтесь, такие знания в 2023 году — на вес золота: Киллер-фича.
Проблема с куриным яйцом (ч.2)
Среди object и type нет реального базового класса. Путаница в приведенных выше фрагментах возникает из-за того, что мы думаем об этих взаимосвязях (issubclass и isinstance) в терминах классов Python. Связь между object и type не может быть воспроизведена в чистом python.
Среди object и type нет реального базового класса. Путаница в приведенных выше фрагментах возникает из-за того, что мы думаем об этих взаимосвязях (issubclass и isinstance) в терминах классов Python. Связь между object и type не может быть воспроизведена в чистом python.
Проблема с куриным яйцом (ч.3)
Чтобы быть более точным, следующие взаимосвязи не могут быть воспроизведены в чистом Python:
Класс A является экземпляром класса B, а класс B является экземпляром класса A.
Класс A является экземпляром самого себя.
Эти отношения между object и type (оба являются экземплярами друг друга, а также самих себя)
Чтобы быть более точным, следующие взаимосвязи не могут быть воспроизведены в чистом Python:
Класс A является экземпляром класса B, а класс B является экземпляром класса A.
Класс A является экземпляром самого себя.
Эти отношения между object и type (оба являются экземплярами друг друга, а также самих себя)
Отношения подклассов
Отношения подклассов не обязательно являются транзитивными в Python. Любому разрешено определять свой собственный, произвольный subclasscheck в метаклассе.
Когда issubclass(cls, Hashable) вызывается, он просто ищет не ложный "hash" метод в cls или что-либо, от чего он наследуется.
Поскольку object является хешируемым, но list не является хешируемым, это нарушает отношение транзитивности.
Отношения подклассов не обязательно являются транзитивными в Python. Любому разрешено определять свой собственный, произвольный subclasscheck в метаклассе.
Когда issubclass(cls, Hashable) вызывается, он просто ищет не ложный "hash" метод в cls или что-либо, от чего он наследуется.
Поскольку object является хешируемым, но list не является хешируемым, это нарушает отношение транзитивности.
Равенство методов и идентичность (ч.1)
Функции - это дескрипторы. Всякий раз, когда к функции обращаются как к атрибуту, вызывается дескриптор, создающий объект метода, который "связывает" функцию с объектом, владеющим атрибутом. При вызове метод вызывает функцию, неявно передавая связанный объект в качестве первого аргумента (именно так мы получаем self в качестве первого аргумента, несмотря на то, что не передаем его явно).
Функции - это дескрипторы. Всякий раз, когда к функции обращаются как к атрибуту, вызывается дескриптор, создающий объект метода, который "связывает" функцию с объектом, владеющим атрибутом. При вызове метод вызывает функцию, неявно передавая связанный объект в качестве первого аргумента (именно так мы получаем self в качестве первого аргумента, несмотря на то, что не передаем его явно).
Python — один из самых популярных языков в мире, а разработчики на нём востребованы в самых разных IT-направлениях. Познакомьтесь с различными сферами применения языка, узнайте, какие навыки сейчас востребованы на фрилансе и как начать работать на удалёнке, на бесплатном онлайн-интенсиве: ▶️https://epic.st/X_We7
Вы научитесь:
📍 Получать данные с сайтов, которые помогают аналитикам и владельцам бизнеса изучать рынок, конкурентов и динамику цен.
📍 Работать с API — специальными программными инструкциями, с помощью которых можно получить данные с сайтов.
📍 Парсить HTML. Узнаете, как автоматизировать сбор информации прямо из HTML-кода сайта.
📍 Автоматически выделять важное из огромных массивов данных с помощью Python.
📍 Писать программы для автоматической отправки важных писем по расписанию, тем самым автоматизировать email-рассылки.
📍 Разбираться в рынке фриланса на Python.
Спикером выступит руководитель направления по исследованию данных в Сбере Анастасия Борнева. Она с 2018 года занимается автоматизацией процессов с помощью искусственного интеллекта.
🎁 Всем участникам, прошедшим интенсив, подарим электронную книгу Роджера Сайпа и Робба Збиерски «Разум под контролем» издательства МИФ. А каждый, кто оставит заявку на участие в интенсиве, получит материал с подборкой коротких и полезных программ на Python.
Подключайтесь, задавайте вопросы и получите сертификат на скидку 10 000 рублей на любой курс Skillbox.
Ждём вас в прямых эфирах с 15 по 17 мая в 19:00 по московскому времени!
Вы научитесь:
📍 Получать данные с сайтов, которые помогают аналитикам и владельцам бизнеса изучать рынок, конкурентов и динамику цен.
📍 Работать с API — специальными программными инструкциями, с помощью которых можно получить данные с сайтов.
📍 Парсить HTML. Узнаете, как автоматизировать сбор информации прямо из HTML-кода сайта.
📍 Автоматически выделять важное из огромных массивов данных с помощью Python.
📍 Писать программы для автоматической отправки важных писем по расписанию, тем самым автоматизировать email-рассылки.
📍 Разбираться в рынке фриланса на Python.
Спикером выступит руководитель направления по исследованию данных в Сбере Анастасия Борнева. Она с 2018 года занимается автоматизацией процессов с помощью искусственного интеллекта.
🎁 Всем участникам, прошедшим интенсив, подарим электронную книгу Роджера Сайпа и Робба Збиерски «Разум под контролем» издательства МИФ. А каждый, кто оставит заявку на участие в интенсиве, получит материал с подборкой коротких и полезных программ на Python.
Подключайтесь, задавайте вопросы и получите сертификат на скидку 10 000 рублей на любой курс Skillbox.
Ждём вас в прямых эфирах с 15 по 17 мая в 19:00 по московскому времени!
Методы: classmethod (ч.1)
Обращение к атрибуту несколько раз каждый раз создает объект метода! Поэтому o1.method is o1.method никогда не бывает правдивым. Доступ к функциям как атрибутам класса (в отличие от экземпляра), однако, не создает методы; так SomeClass.method is SomeClass.method и есть на самом деле.
Обращение к атрибуту несколько раз каждый раз создает объект метода! Поэтому o1.method is o1.method никогда не бывает правдивым. Доступ к функциям как атрибутам класса (в отличие от экземпляра), однако, не создает методы; так SomeClass.method is SomeClass.method и есть на самом деле.