Думаете, Биткоин золотая жила?
Чушь. В этом месяце выйдет 6 монет, который обгонят его годовой рост за неделю. Их список скоро выложат в канале Андрей Соколов.
Это блог трейдера, который за 5 лет начальные $10 тыс. превратил в $2 млн. Он находит монеты, которые взлетают в 3-5 раз в течение недели-двух и рассказывает о таких сделках в своем канале.
Все сделки, анализы и наработки публикует в своём блоге. Загляните сами. Ссылка удалится через сутки, имейте в виду 👇
Перейти в канал и посмотеть список самых перспективных монет на июнь →
Чушь. В этом месяце выйдет 6 монет, который обгонят его годовой рост за неделю. Их список скоро выложат в канале Андрей Соколов.
Это блог трейдера, который за 5 лет начальные $10 тыс. превратил в $2 млн. Он находит монеты, которые взлетают в 3-5 раз в течение недели-двух и рассказывает о таких сделках в своем канале.
Все сделки, анализы и наработки публикует в своём блоге. Загляните сами. Ссылка удалится через сутки, имейте в виду 👇
Перейти в канал и посмотеть список самых перспективных монет на июнь →
Сравнение быстродействия def и lambda-функций Python. Производные функции часть 3
Слабонервным людям, ненавидящим многоуровневые вложения, не читать.
Для ранее описанных общих функций можно создавать бесконечно много проиводных. Для производной замера скорости структура такая
#theory // Just Python
Слабонервным людям, ненавидящим многоуровневые вложения, не читать.
Для ранее описанных общих функций можно создавать бесконечно много проиводных. Для производной замера скорости структура такая
#theory // Just Python
locals() внутри метода
locals() внутри функции возвращает локальную переменную, обратите внимание, что глобальные переменные являются частью глобального словаря таблицы символов.
#theory // Just Python
locals() внутри функции возвращает локальную переменную, обратите внимание, что глобальные переменные являются частью глобального словаря таблицы символов.
#theory // Just Python
Функция set union() в Python
В теории множеств set union() – это набор всех элементов в коллекции наборов. На следующем изображении показаны операции объединения наборов.
Класс set union() в Python предоставляет функцию union() для получения объединения наборов. Результатом является новый набор со всеми элементами из коллекции наборов.
#theory // Just Python
В теории множеств set union() – это набор всех элементов в коллекции наборов. На следующем изображении показаны операции объединения наборов.
Класс set union() в Python предоставляет функцию union() для получения объединения наборов. Результатом является новый набор со всеми элементами из коллекции наборов.
#theory // Just Python
Добавление матрицы
Код для сложения матриц достаточно сложен для написания вручную. Благодаря модулю numpy мы можем просто использовать оператор + для добавления матрицы. Итак, в следующем примере кода мы увидим, как писать код сложения вручную, а также с помощью оператора +.
#theory // Just Python
Код для сложения матриц достаточно сложен для написания вручную. Благодаря модулю numpy мы можем просто использовать оператор + для добавления матрицы. Итак, в следующем примере кода мы увидим, как писать код сложения вручную, а также с помощью оператора +.
#theory // Just Python
Метод Naive
В методе Naive цикл for используется для обхода второго списка. После этого элементы из второго списка добавляются к первому списку. Первый список является объединением первого и второго списков.
#theory // Just Python
В методе Naive цикл for используется для обхода второго списка. После этого элементы из второго списка добавляются к первому списку. Первый список является объединением первого и второго списков.
#theory // Just Python
Профилирование и статистика кода
Какой разговор о профилировании питона обходится без описания cProfile — одного из стандартных модулей Python? Уверен, каждый программист Python хоть раз пробовал запустить cProfile.
#theory // Just Python
Какой разговор о профилировании питона обходится без описания cProfile — одного из стандартных модулей Python? Уверен, каждый программист Python хоть раз пробовал запустить cProfile.
#theory // Just Python
Создание мелких копий существующих списков
Создание мелкой копии означает, что копируется только структура элементов, но не сами элементы. Обе копии списка совместно используют одинаковые экземпляры отдельных элементов.
Если же вам необходимо продублировать абсолютно всё, включая и элементы, то необходимо создать глубокую копию списка (copy.deepcopy(x)). Для этой цели пригодится встроенный модуль в Python copy.
#theory // Just Python
Создание мелкой копии означает, что копируется только структура элементов, но не сами элементы. Обе копии списка совместно используют одинаковые экземпляры отдельных элементов.
Если же вам необходимо продублировать абсолютно всё, включая и элементы, то необходимо создать глубокую копию списка (copy.deepcopy(x)). Для этой цели пригодится встроенный модуль в Python copy.
#theory // Just Python
Ограничение использования процессора и памяти (ч.1)
Если вместо того, чтобы оптимизировать программу, или улучшить то, как она пользуется процессором, вам нужно просто задать жёсткое ограничение на доступные ей ресурсы, можно воспользоваться соответствующей библиотекой
Тут показано ограничение процессорного времени и объёма памяти. Для того чтобы ограничить использование программой процессора, мы сначала получаем значения нежёсткого и жёсткого (hard) лимитов для конкретного ресурса (RLIMIT_CPU).
#theory // Just Python
Если вместо того, чтобы оптимизировать программу, или улучшить то, как она пользуется процессором, вам нужно просто задать жёсткое ограничение на доступные ей ресурсы, можно воспользоваться соответствующей библиотекой
Тут показано ограничение процессорного времени и объёма памяти. Для того чтобы ограничить использование программой процессора, мы сначала получаем значения нежёсткого и жёсткого (hard) лимитов для конкретного ресурса (RLIMIT_CPU).
#theory // Just Python
Ограничение использования процессора и памяти (ч.2)
Затем мы устанавливаем лимит, используя некое число секунд, задаваемое аргументом seconds, и ранее полученное значение жёсткого лимита. После этого мы регистрируем обработчик signal, который, при превышении выделенного программе процессорного времени, инициирует процедуру выхода. В случае с памятью, мы, опять же, получаем значения для нежёсткого и жёсткого лимитов, после чего устанавливаем ограничение с помощью метода setrlimit, которому передаём размер ограничения (size) и ранее полученное значение жёсткого лимита.
#theory // Just Python
Затем мы устанавливаем лимит, используя некое число секунд, задаваемое аргументом seconds, и ранее полученное значение жёсткого лимита. После этого мы регистрируем обработчик signal, который, при превышении выделенного программе процессорного времени, инициирует процедуру выхода. В случае с памятью, мы, опять же, получаем значения для нежёсткого и жёсткого лимитов, после чего устанавливаем ограничение с помощью метода setrlimit, которому передаём размер ограничения (size) и ранее полученное значение жёсткого лимита.
#theory // Just Python
Сравнение быстродействия def и lambda-функций Python. Функции для упрощения жизни
Кому захочется повторять одно и то действие, но с разными параметрами? Никому. Поэтому, есть некоторые вспомогательные функции, для рисования графика по заданным параметрам, для создания черепахи. Кстати, о последнем — черепахи тоже заносятся в общий словарь.
#theory // Just Python
Кому захочется повторять одно и то действие, но с разными параметрами? Никому. Поэтому, есть некоторые вспомогательные функции, для рисования графика по заданным параметрам, для создания черепахи. Кстати, о последнем — черепахи тоже заносятся в общий словарь.
#theory // Just Python
Конкатенация строк
Если нужно конкатенировать список строк, сделать это можно в цикле
Более эффективный подход к решению этой задачи заключается в использовании функции
#theory // Just Python
Если нужно конкатенировать список строк, сделать это можно в цикле
for, по одной добавляя строки к итоговому результату. Однако такой подход будет весьма неэффективным, особенно в том случае, если список оказывается достаточно длинным. В Python строки являются иммутабельными сущностями. В результате каждая операция по конкатенации строк означает необходимость копирования пары строк в новую строку.Более эффективный подход к решению этой задачи заключается в использовании функции
join()#theory // Just Python
Настраиваемый логгер-декоратор
Начнем с примера использования. Так мы не перегружаем внимание внутренней сложностью и повышаем шансы создать удачный интерфейс модуля. На этом принципе основана разработка через тестирование — test-driven development (TTD).
У класса
#theory // Just Python
Начнем с примера использования. Так мы не перегружаем внимание внутренней сложностью и повышаем шансы создать удачный интерфейс модуля. На этом принципе основана разработка через тестирование — test-driven development (TTD).
У класса
Logger есть метод log_msg(), который можно использовать напрямую внутри функций.#theory // Just Python
Сложение списков
Не всегда операторы в python ведут себя так, как мы привыкли. Например сложение списков.
Как видно, инструкция 28 в случае
#theory // Just Python
Не всегда операторы в python ведут себя так, как мы привыкли. Например сложение списков.
Как видно, инструкция 28 в случае
+ простое сложение, а в случае += — сложение на месте, которое не приводит к созданию нового списка. += в данном случае сопоставим по производительности с list.extend.#theory // Just Python
Анатомия декоратора в Python
Создадим декоратор
#theory // Just Python
Создадим декоратор
@hello_decorator.
Декоратор в Python — функция, которая принимает функцию/класс и возвращает функцию/класс. В примере декоратор hello_decorator() принимает функцию f(), и возвращает функцию wrapper().#theory // Just Python
Кэширование строк
Стоит отметить, что это очень сильно зависит от интерпретатора Python. Также правила могут измениться в будущем.
Короткие строки в Python кэшируются интерпретатором при инициализации. Это используется для сохранения памяти.
Если вы хотите поэкспериментировать, можете установить Python 2.7 и поиграться с функцией
#theory // Just Python
Стоит отметить, что это очень сильно зависит от интерпретатора Python. Также правила могут измениться в будущем.
Короткие строки в Python кэшируются интерпретатором при инициализации. Это используется для сохранения памяти.
Если вы хотите поэкспериментировать, можете установить Python 2.7 и поиграться с функцией
intern(), которая принудительно кэширует строку.#theory // Just Python
Python оптимизировал создание строки
С помощью dis мы можем посмотреть байт-код программы.
Здесь мы видим, что 'hello' и 'hell' + 'o' ничем не отличается друг от друга, а значит Python поступил по умному и оптимизировал код.
#theory // Just Python
С помощью dis мы можем посмотреть байт-код программы.
Здесь мы видим, что 'hello' и 'hell' + 'o' ничем не отличается друг от друга, а значит Python поступил по умному и оптимизировал код.
#theory // Just Python
Разница между is и ==
Каждый объект хранится в памяти и имеет свой номер, по которому можно его найти. Этот номер можно получить с помощью функции
is занимается сравниванием этих самых адресов. В то время как == вызывает функцию
Представьте куб, а потом ещё один такой же. Они одинаковые, но это два абсолютно разных объекта. Также и в программировании.
#theory // Just Python
Каждый объект хранится в памяти и имеет свой номер, по которому можно его найти. Этот номер можно получить с помощью функции
id().is занимается сравниванием этих самых адресов. В то время как == вызывает функцию
__eq__ и предназначения для сравнения значений класса.Представьте куб, а потом ещё один такой же. Они одинаковые, но это два абсолютно разных объекта. Также и в программировании.
#theory // Just Python
Булевые операции
#theory // Just Python
x or y — если x правда (True), возвращает x, иначе y.x and y — если x правда (True), возвращает y, иначе x.#theory // Just Python
Про переменные и их названия
В python можно встретить переменные по типу
#theory // Just Python
В python можно встретить переменные по типу
name, _name, __name. Но что значат эти подчёркивания перед названием?_name — индикатор того, что это внутренняя переменная и работать с ней напрямую не стоит. Также при from M import * не импортирует объекты, что начинаются на _. __name — заменяет имя на _classname__name, где classname — это имя текущего класса с удаленными начальными символами подчеркивания. Используется для определения частных переменных, которыми никто не должен пользоваться.#theory // Just Python