9 696
订阅者
-624 小时
-217 天
-7630 天
帖子存档
9 696
Статические переменные
Это переменная, которая создаётся вместе с типом и существует до закрытия приложения.
Все переменные, что находится внутри класса, но не попадают в ни один метод являются статическими.
#theory // Just Python
9 696
⚡️Вакцинация была смертельно опасна — предупреждал The Economist ещё в 2019 году
А ещё про СВО в 2022 и войну в Израиле в 2023. Но глупое большинство как всегда никого не слушало.
Сейчас Economist даёт прогноз на потрясения, ожидающие Россию в ИЮЛЕ, и предупреждает об эпидемии 2024 года.
Уже опубликовано пророчество ДО КОНЦА 2024, советуем почитать:
@economist
9 696
Возможности срезов
С помощью срезов мы можем менять элементы списка. Называют это так: «Изменение путем присваивания».
Таким образом мы заменяем элементы внутри этого среза другими из итератора (list, tuple, range).
С их помощью мы также можем добавлять/удалять элементы, опустошать список и многое другое.
Стоит отметить, что в разреженных срезах ([::2]) такое не работает, если длина итератора не равна длине результата среза.
#theory // Just Python
9 696
Нижние подчёркивание между цифрами
Они никак не влияют на приложение и используются для того, чтобы числа было удобнее считывать при больших значениях.
Таким образом можно разделять десятки, сотни, тысячи и так далее.
#theory // Just Python
9 696
__getattribute__ и __getattr__
Это особые методы, которые вызываются при попытке получить какой-либо атрибут класса. Например, foo.var вызовет __getattribute__, а после, возможно __getattr__.
Отличие между методами только в том, что __getattribute__ используется всегда, а __getattr__ только если атрибут не найден.
#theory // Just Python9 696
+1
Провожу эфиры редко, но каждый из них — выжимка полезной информации и мотивация)
На вебинаре делюсь тем, как я вижу этот рынок, опираясь на свой многолетний опыт.
9 июля в 19.00 по МСК
эфир "Как выйти на заработок 100.000р на торговле акциями за пол года?"
—
▪️ Сколько реально зарабатывать, если совмещать с основной работой
▪️ Какие шаги тебе нужно делать, чтобы выйти на 300К
▪️ Как начать торговать, не имея своего капитала
Готовьте вопросы и регистрируйтесь на вебинар
в закрепе канала.
🔗Ivan Popov
Лучи добра.
9 696
Про copy
В python есть модуль, который называется copy. У него только две функции:
copy() и deepcopy().
copy(x) — поверхностно копирует объект и вставляет в него ссылки на объекты, обнаруженные в оригинале.
deepcopy(x) — Создаёт новый объект и рекурсивно вставляет в него копии объектов, которые нашёл в оригинале.
#theory // Just Python9 696
У 1win появилась своя тапалка как хомяк и NOTCOIN!
Игре всего пару дней и самое время забрать свои 500$
Я думаю будет жарко)
Успейте залететь, игре только пару дней, фармите токены и приглашайте друзей, я думаю те кто в начале зашли снимут все сливки!
Тапалка - 1WIN (КЛИК)
9 696
Что такое
@wraps?
Это декоратор из модуля functools, который используется для создания декораторов.
Он обновляет значения __module__, __name__, __doc__ на значение реальной функции, а не декоратора, а также добавляет __wrapped__ для получения доступа к декорируемой функции.
Подробнее можно почитать в документации.
#theory // Just Python9 696
Про переменные и их названия
В python можно встретить переменные по типу
name, _name, __name. Но что значат эти подчёркивания перед названием?
_name — индикатор того, что это внутренняя переменная и работать с ней напрямую не стоит. Также при from M import * не импортирует объекты, что начинаются на _.
__name — заменяет имя на _classname__name, где classname — это имя текущего класса с удаленными начальными символами подчеркивания. Используется для определения частных переменных, которыми никто не должен пользоваться.
#theory // Just Python9 696
Станьте Python-разработчиком за 0₽
Зарплата начинающего Python разработчика от 100 000₽, а стоимость обучения на профессию в онлайн-школах от 120 000 до 300 000 рублей.
Прямо сейчас GeekBrains отдают бесплатно 3 курса по IT, в том числе и курс по Python.
⚠️Переходите по ссылке и забирайте курс по Python — только до 6-го июля: https://go.redav.online/8869ae06bd84def0?erid=LdtCK7b7u&m=1
9 696
Булевые операции
x or y — если x правда (True), возвращает x, иначе y.
x and y — если x правда (True), возвращает y, иначе x.
#theory // Just Python9 696
Разница между is и ==
Каждый объект хранится в памяти и имеет свой номер, по которому можно его найти. Этот номер можно получить с помощью функции
id().
is занимается сравниванием этих самых адресов. В то время как == вызывает функцию __eq__ и предназначения для сравнения значений класса.
Представьте куб, а потом ещё один такой же. Они одинаковые, но это два абсолютно разных объекта. Также и в программировании.
#theory // Just Python9 696
Python оптимизировал создание строки
С помощью dis мы можем посмотреть байт-код программы.
Здесь мы видим, что 'hello' и 'hell' + 'o' ничем не отличается друг от друга, а значит Python поступил по умному и оптимизировал код.
#theory // Just Python
9 696
Кэширование строк
Стоит отметить, что это очень сильно зависит от интерпретатора Python. Также правила могут измениться в будущем.
Короткие строки в Python кэшируются интерпретатором при инициализации. Это используется для сохранения памяти.
Если вы хотите поэкспериментировать, можете установить Python 2.7 и поиграться с функцией
intern(), которая принудительно кэширует строку.
#theory // Just Python9 696
9 696
Анатомия декоратора в Python
Создадим декоратор
@hello_decorator.
Декоратор в Python — функция, которая принимает функцию/класс и возвращает функцию/класс. В примере декоратор hello_decorator() принимает функцию f(), и возвращает функцию wrapper().
#theory // Just Python9 696
Сложение списков
Не всегда операторы в python ведут себя так, как мы привыкли. Например сложение списков.
Как видно, инструкция 28 в случае
+ простое сложение, а в случае += — сложение на месте, которое не приводит к созданию нового списка. += в данном случае сопоставим по производительности с list.extend.
#theory // Just Python9 696
Настраиваемый логгер-декоратор
Начнем с примера использования. Так мы не перегружаем внимание внутренней сложностью и повышаем шансы создать удачный интерфейс модуля. На этом принципе основана разработка через тестирование — test-driven development (TTD).
У класса
Logger есть метод log_msg(), который можно использовать напрямую внутри функций.
#theory // Just Python9 696
Конкатенация строк
Если нужно конкатенировать список строк, сделать это можно в цикле
for, по одной добавляя строки к итоговому результату. Однако такой подход будет весьма неэффективным, особенно в том случае, если список оказывается достаточно длинным. В Python строки являются иммутабельными сущностями. В результате каждая операция по конкатенации строк означает необходимость копирования пары строк в новую строку.
Более эффективный подход к решению этой задачи заключается в использовании функции join()
#theory // Just Python