Интересно. В С разбираюсь не очень хорошо, к сожалению. Но явно какие-то оптимизации есть, судя по вызову для 1500 и 90. Тем не менее - вариант с range получается медленне
def filter_three(x: int) -> bool:
return x in range(100, 1000)
def filter_three_2(x: int) -> bool:
return 100 <= x < 1000
%%timeit
filter_three(500)
> 192 ns ± 14.3 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each)
%%timeit
filter_three_2(500)
> 65.4 ns ± 5.15 ns per loop (mean ± std. dev. of 7 runs, 10,000,000 loops each)
%%timeit
filter_three(1500)
> 164 ns ± 13.1 ns per loop (mean ± std. dev. of 7 runs, 10,000,000 loops each)
%%timeit
filter_three_2(1500)
> 74.1 ns ± 3.7 ns per loop (mean ± std. dev. of 7 runs, 10,000,000 loops each)
%%timeit
filter_three(90)
> 153 ns ± 7.18 ns per loop (mean ± std. dev. of 7 runs, 10,000,000 loops each)
%%timeit
filter_three_2(90)
> 75.6 ns ± 3.55 ns per loop (mean ± std. dev. of 7 runs, 10,000,000 loops each)
Видимо, я чего-то не понимаю. Почему не будет? Во втором питоне range возвращал список. В третьем - возвращает итерируемый объект. Оператор in в данном случае вынужден перебрать все значения диапазона, пока (не) встретит x. Поправьте, в чем я не прав?
Можно гораздо проще. Так как модули в Python сами по себе являются синглтонами, то достаточно создать инстанс класса и импортировать уже его. За примерами далеко ходить не надо - модуль logging построен примерно по такому принципу, хотя там конечно все устроено немного сложнее, просто это первое, что пришло в голову.
Все когда-нибудь меняется. Конечно, Rust пока Си не убъет, но замена вполне достойная. Давеча ковырялся вот с этой штукой на Blue Pill https://github.com/stm32-rs/stm32f1xx-hal/
А зачем объединять тесты в классы? Кроме лишнего отступа это ничего не даёт. В питоне, если нет внутреннего состояния - нет смысла объединять группу функций в объект с методами
что такое http запрос, отправленный с помощью питона, то цена знанию языка ноль. Или если нет понимания, что такое БД и как туда записать что-то из питона (про проектирование и не говорю). Ну и так по всему областям, которые изучаются в старших классах школы / в техникуме / в универе.
Всего этого вполне можно набраться, решая проблемы pet-проекта - мой опыт был таким. Но для этого нужен реальный интерес к кодингу, а не к деньгам, когда отрываешь голову от проекта, а вокруг - ночь и все спят, а у тебя ещё столько планов, которые ты хотел успеть перед сном.
А вообще, по этому поводу я люблю повторять, что ЯП - это всего лишь азбука, но кроме неё есть ещё и ядерная физика, органическая химия и астрономия.
Кстати, наблюдение - несмотря на то, что основным языком ML-разработки считается Python, для ML-разработчиков, да и вообще датасайентистам глубокое знание Python как правило не требуется. Зачастую основной их инструмент - Jupyter Notebook/Lab, плюс pandas, pytorch, etc... Когда задача - не писать код, а ставить эксперименты с данными и прочее (простите, не моя стихия), то часто бывает, что поверхностных знаний Python вполне хватает, губокое знание предмета и нужных библиотек гораздо важнее.
Курсы, лекции, статьи и прочая теория - это, конечно, хорошо. Но вот лично мне кажется, что после того, как набирается какой-то минимальный багаж знаний - нужно найти, к чему эти знания применить. Нужно подумать о том, какую задачу можно решить с помощью программирования - задачу нужную и полезную, если не себе, то хотя бы соседу. Ну или pet-проект начать. Но pet-проект - эта такая штука, которую очень просто бросить, не всем подойдёт. Я вот, например, не могу сидеть над одной и той же задачей, которая делается для себя, "в стол", больше пары дней, а вот над рабочими задачами - без проблем.
Я к чему это все - после получения минимума теории нужно закреплять эту практикой, остальная теория наберётся в процессе решения возникающих проблем. На всё это нужно тратить очень и очень много времени. Вот с временем в 35, к сожалению, обычно большие проблемы.
К слову, сам я всегда всем рекомендовал читать Лутца, но, что характерно, так его и не дочитал, даже до классов не дошёл.
Я лично считаю что первый язык программирования должен быть C
Если у человека есть интерес, тяга и способности к программированию со школьной скамьи, а так же план развития, как программиста - то однозначно да. Во многих остальных случаях это может быть неоправдано или даже сделать только хуже, отбив интерес к программированию напрочь.
Мегабрендовая - это какая? У нас изначально выдавали Petzl, потом перешли на Vento. Кстати, у нас были абсорбики, а у вас, я смотрю, "усы" из веревок. И раций нас не выдавали, приходилось звонить, а когда не было связи - орать 😂
Времени тратится не на столько меньше, чтобы вариант с range был приемлемым
Интересно. В С разбираюсь не очень хорошо, к сожалению. Но явно какие-то оптимизации есть, судя по вызову для 1500 и 90. Тем не менее - вариант с
range
получается медленнеВидимо, я чего-то не понимаю. Почему не будет?
Во втором питоне range возвращал список. В третьем - возвращает итерируемый объект. Оператор
in
в данном случае вынужден перебрать все значения диапазона, пока (не) встретитx
.Поправьте, в чем я не прав?
Можно гораздо проще. Так как модули в Python сами по себе являются синглтонами, то достаточно создать инстанс класса и импортировать уже его. За примерами далеко ходить не надо - модуль logging построен примерно по такому принципу, хотя там конечно все устроено немного сложнее, просто это первое, что пришло в голову.
Ну хотя бы вот так
чтобы не перебирать значения от 100 до 1000 в надежде (не)встретить нужное
Извините, статья, конечно же не про это, но от такого примера у меня глаз задёргался :-)
В РБ ещё работает
Там написано - набор для сборки педали
Простите, я не настоящий сварщик, так, балуюсь иногда в Rust. Возможно по этому я не понял - при чем тут операционка?
Под Blue Pill я имел в виду штуку наподобие этой: https://stm32-base.org/boards/STM32F103C8T6-Blue-Pill.html
Rust embedded работает на голом железе, без OS
Все когда-нибудь меняется. Конечно, Rust пока Си не убъет, но замена вполне достойная.
Давеча ковырялся вот с этой штукой на Blue Pill
https://github.com/stm32-rs/stm32f1xx-hal/
Насчёт установки циферблатов на Mi Band 7 - вместо официальных приложений пользуюсь Gadgetbridge:
https://gadgetbridge.org/gadgets/wearables/xiaomi/#device__xiaomi_mi_band_7
https://f-droid.org/ru/packages/nodomain.freeyourgadget.gadgetbridge/
Ну, а сами циферблаты можно ещё посмотреть вот тут: https://amazfitwatchfaces.com/mi-band-7/top?topof=alltime
Гравитация присутствует всегда, а вот вес будет равен нулю
Так вроде там все живы, здоровы. Нет необходимости срочно из возвращать, поэтому заберут их следующим плановым рейсом.
В качестве контейнера для тестов может служить не только класс, но и модуль. Но ладно, это уже вкусовщина, у каждого свои фломастеры :-)
А зачем объединять тесты в классы? Кроме лишнего отступа это ничего не даёт.
В питоне, если нет внутреннего состояния - нет смысла объединять группу функций в объект с методами
Всего этого вполне можно набраться, решая проблемы pet-проекта - мой опыт был таким. Но для этого нужен реальный интерес к кодингу, а не к деньгам, когда отрываешь голову от проекта, а вокруг - ночь и все спят, а у тебя ещё столько планов, которые ты хотел успеть перед сном.
А вообще, по этому поводу я люблю повторять, что ЯП - это всего лишь азбука, но кроме неё есть ещё и ядерная физика, органическая химия и астрономия.
Кстати, наблюдение - несмотря на то, что основным языком ML-разработки считается Python, для ML-разработчиков, да и вообще датасайентистам глубокое знание Python как правило не требуется. Зачастую основной их инструмент - Jupyter Notebook/Lab, плюс pandas, pytorch, etc... Когда задача - не писать код, а ставить эксперименты с данными и прочее (простите, не моя стихия), то часто бывает, что поверхностных знаний Python вполне хватает, губокое знание предмета и нужных библиотек гораздо важнее.
Курсы, лекции, статьи и прочая теория - это, конечно, хорошо. Но вот лично мне кажется, что после того, как набирается какой-то минимальный багаж знаний - нужно найти, к чему эти знания применить. Нужно подумать о том, какую задачу можно решить с помощью программирования - задачу нужную и полезную, если не себе, то хотя бы соседу. Ну или pet-проект начать. Но pet-проект - эта такая штука, которую очень просто бросить, не всем подойдёт. Я вот, например, не могу сидеть над одной и той же задачей, которая делается для себя, "в стол", больше пары дней, а вот над рабочими задачами - без проблем.
Я к чему это все - после получения минимума теории нужно закреплять эту практикой, остальная теория наберётся в процессе решения возникающих проблем. На всё это нужно тратить очень и очень много времени. Вот с временем в 35, к сожалению, обычно большие проблемы.
К слову, сам я всегда всем рекомендовал читать Лутца, но, что характерно, так его и не дочитал, даже до классов не дошёл.
Если у человека есть интерес, тяга и способности к программированию со школьной скамьи, а так же план развития, как программиста - то однозначно да. Во многих остальных случаях это может быть неоправдано или даже сделать только хуже, отбив интерес к программированию напрочь.
Мегабрендовая - это какая? У нас изначально выдавали Petzl, потом перешли на Vento.
Кстати, у нас были абсорбики, а у вас, я смотрю, "усы" из веревок. И раций нас не выдавали, приходилось звонить, а когда не было связи - орать 😂