Области видимости в Python.
Так, с последним моим переездом пропустил два дня для поста, но, собственно, ничего вроде страшного. Сейчас я снова в стою и буду писать, пока пишется.
Области видимости (О.В. в примере) в языках программирования рассматриваются как некоторые сущности, знаете. Этот термин подразумевает область программы, откуда будет доступна переменная, функция и т.п. структуры.
Из теории тут ничего особо важного да и сложного нет. Все принципы примерно похожи для большинства языков, но на примере Python:
Что тут происходит? Всё просто: две переменные
Таким образом переменные
Кстати, с областями видимости есть классная и очень интересная особенность - замкнутость. Она много где используется, например в тех-же декораторах. Может быть я напишу об этом позже, конечно, но советую самостоятельно ознакомиться, тема интересная. Ну и конечно же есть смысл посмотреть про ключевые слова global и nonlocal, но помните, что использование этих ключевых слов не очень хороший тон в программировании.
Спасибо прочтение и классный фидбек в личных сообщениях, это дорогого стоит
#python
Так, с последним моим переездом пропустил два дня для поста, но, собственно, ничего вроде страшного. Сейчас я снова в стою и буду писать, пока пишется.
Области видимости (О.В. в примере) в языках программирования рассматриваются как некоторые сущности, знаете. Этот термин подразумевает область программы, откуда будет доступна переменная, функция и т.п. структуры.
Из теории тут ничего особо важного да и сложного нет. Все принципы примерно похожи для большинства языков, но на примере Python:
# глобальная O.B.
a = 5
b = 6
def foo(): # foo О.В.
c = 7
return a * b
foo()
>>> 30
print(c)
>>> NameError: name 'c' is not defined
Что тут происходит? Всё просто: две переменные
a
и b
мы объявляем в глобальной области видимости, а c
в области видимости функции foo
. И тут нужно понять, что области видимости работают по принципу вложенности: переменные из родителя доступны в ребёнке, но не наоборот (!). Таким образом переменные
a
и b
доступны в функции foo
, но c
не доступна в глобальной области видимости, переменная локальна. Кстати, с областями видимости есть классная и очень интересная особенность - замкнутость. Она много где используется, например в тех-же декораторах. Может быть я напишу об этом позже, конечно, но советую самостоятельно ознакомиться, тема интересная. Ну и конечно же есть смысл посмотреть про ключевые слова global и nonlocal, но помните, что использование этих ключевых слов не очень хороший тон в программировании.
Спасибо прочтение и классный фидбек в личных сообщениях, это дорогого стоит
#python
Зачем нужны абстрактные методы и классы?
Думаю, что многие знаю о существовании абстракции в языках программирования, но даже если вы не слышали об этом, то сейчас я объясню это в максимально простом виде 🙃
Давайте начну с примера из личного опыта. Может быть затяну из-за этого, но должно быть интересно. Так вот, недавно я работал в стартапе из кремниевой долины. Мы с командой создавали чат-бота, который будет работать во всех мессенджерах, будь то Telegram, VK, What's App, Viber или Facebook Messenger.
Как тут быть? У каждого мессенджера свой API со своими входными и выходными, мы столкнулись с проблемой стандартизации. Тогда мы просто взяли и написали свой интерфейс для каждого мессенджера. Стандартом интерфейса и стал абстрактный класс с абстрактными методами. Так что же это такое?
Абстрактный класс - класс, унаследованный от класса
Абстрактный метод - метод класса, задекорированный декоратором
Давайте на примере, так будет яснее. Отдалённо повторим интерфейс мессенджера из нашего проекта:
Что происходит в этом примере? Я объявил класс Interface, который унаследован от абстрактного класса
Потом мы реализуем класс, например
Надеюсь этот пример помог вам понять что это такое и немного разобраться.
#python
Думаю, что многие знаю о существовании абстракции в языках программирования, но даже если вы не слышали об этом, то сейчас я объясню это в максимально простом виде 🙃
Давайте начну с примера из личного опыта. Может быть затяну из-за этого, но должно быть интересно. Так вот, недавно я работал в стартапе из кремниевой долины. Мы с командой создавали чат-бота, который будет работать во всех мессенджерах, будь то Telegram, VK, What's App, Viber или Facebook Messenger.
Как тут быть? У каждого мессенджера свой API со своими входными и выходными, мы столкнулись с проблемой стандартизации. Тогда мы просто взяли и написали свой интерфейс для каждого мессенджера. Стандартом интерфейса и стал абстрактный класс с абстрактными методами. Так что же это такое?
Абстрактный класс - класс, унаследованный от класса
ABC
и содержащий абстрактные методы.Абстрактный метод - метод класса, задекорированный декоратором
@abstractmethod
и не имеющей реализации. Такой метод нужен только для объявления. Давайте на примере, так будет яснее. Отдалённо повторим интерфейс мессенджера из нашего проекта:
from abc import ABC, abstractmethod
class Interface(ABC):
@abstractmethod
def send_message(self, chat_id, *args, **kwargs):
pass
@abstractmethod
def send_photo(self, chat_id, txt=None, *args, **kvargs):
pass
@abstractmethod
def send_file(self, file, txt=None, media=None):
pass
# Ну и так далее
Что происходит в этом примере? Я объявил класс Interface, который унаследован от абстрактного класса
ABC
. В этом классе я объявил 3 абстрактных метода. У них нет реализации. Суть абстрактного класса заключается лишь в том, чтобы обязать наследника класса Interface
реализовать все необходимые методы.Потом мы реализуем класс, например
Telegram
, где реализуем метод send_message
одним кодом, а в классе WhatsApp
реализуем тот же метод совсем по другому. Нас не волнует как это работает внутри, мы лишь описываем необходимый интерфейс взаимодействия.Надеюсь этот пример помог вам понять что это такое и немного разобраться.
#python
Нужен ли Bootstrap.
В front-end есть такой вечный холивар на тему Bootstrap'a. Очень часто я стал слышать мнение, что на самом деле Bootstrap не нужен и надо бы верстать без него. Сегодня попробую подробнее разобраться в том вопросе.
Ну и чтобы истину было гораздо проще вычленить, я предлагаю рассмотреть плюсы и минусы фреймворка:
1. Во-первых, плюсом будет унификация и стандартизация. Bootstrap будет понятен любому разработчику после вас, а код будет читаемым.
2. Во-вторых, фреймворк очень эффективен при быстрой разработке. Все классы уже готовы, нужно просто правильно распределить их по документу.
3. В третьих, не нужно изобретать свой велосипед. Часто начинающие разработчики пишут свои велосипеды, а это не имеет никакого смысла в коммерческой разработке, будем честны. Чаще всего новый продукт можно собрать из кусков других проектов и это вполне нормально, а главное - быстро и дёшево.
4. Неплохая адаптивность из коробки.
Ну и недостатки:
1. Нужно разбираться. Много есть классов, которые необходимо знать и уметь использовать. А для их изучения нужно время, это часто отпугивает людей.
2. Многие классы вообще не используются в разработке проекта. Тем более, если проект серьезный, то функционала фреймворка будет уже недостаточно и придётся так или иначе писать собственные стили.
3. Уменьшается скорость загрузки страницы, это иногда очень значительный показатель.
Как итог, ну нужен конечно. Лично по моему мнению, естественно. Нет смысла изобретать свои велосипеды от проекта к проекту, гораздо проще один раз выучить Bootstrap и понимать, что речь не идёт о полноценной замене файла каскадных стилей. Берём лучшее из двух миров и бед не знаем, я так считаю 🙂
#web #design
В front-end есть такой вечный холивар на тему Bootstrap'a. Очень часто я стал слышать мнение, что на самом деле Bootstrap не нужен и надо бы верстать без него. Сегодня попробую подробнее разобраться в том вопросе.
Ну и чтобы истину было гораздо проще вычленить, я предлагаю рассмотреть плюсы и минусы фреймворка:
1. Во-первых, плюсом будет унификация и стандартизация. Bootstrap будет понятен любому разработчику после вас, а код будет читаемым.
2. Во-вторых, фреймворк очень эффективен при быстрой разработке. Все классы уже готовы, нужно просто правильно распределить их по документу.
3. В третьих, не нужно изобретать свой велосипед. Часто начинающие разработчики пишут свои велосипеды, а это не имеет никакого смысла в коммерческой разработке, будем честны. Чаще всего новый продукт можно собрать из кусков других проектов и это вполне нормально, а главное - быстро и дёшево.
4. Неплохая адаптивность из коробки.
Ну и недостатки:
1. Нужно разбираться. Много есть классов, которые необходимо знать и уметь использовать. А для их изучения нужно время, это часто отпугивает людей.
2. Многие классы вообще не используются в разработке проекта. Тем более, если проект серьезный, то функционала фреймворка будет уже недостаточно и придётся так или иначе писать собственные стили.
3. Уменьшается скорость загрузки страницы, это иногда очень значительный показатель.
Как итог, ну нужен конечно. Лично по моему мнению, естественно. Нет смысла изобретать свои велосипеды от проекта к проекту, гораздо проще один раз выучить Bootstrap и понимать, что речь не идёт о полноценной замене файла каскадных стилей. Берём лучшее из двух миров и бед не знаем, я так считаю 🙂
#web #design
🔥1
Зачем нужен json.
Казалось бы, вопрос вполне очевидный, но далеко не для всех. Сегодня расскажу про json и его особенности.
Итак, json - это формат передачи данных. Многие связывают его исключительно с JavaScript и WebDev, но в современном мире это далеко не так. Многие языки способны обрабатывать json и имеют для этого встроенные функции/модули. Например в Python есть встроенный пакет json, который позволит вам легко обработать этот формат и, например, перевести json в обычный питоновский словарь для облегчения работы.
Что же делает json таким популярным? Ну, очевидно, это удобство использования. Если вспоминать ближайшего конкурента, а именно xml, то лично мне json кажется более читабельным и удобным в работе. В своей практике я работал с обоими технологиями, и правды ради обе удобны. У каждой есть свои плюсы и минусы, но и сферы применения так же разнятся.
ᅠ
Но насчёт читабельности, предлагаю оформить одну и ту же структуру данных сначала в json, а затем в xml:
Используется же json чаще всего в случаях, когда нужно быстро получить какой-то ответ от сервера. И речь тут не только о Web. Например, в формате json ответ от сервера могут получать мобильные приложения. Ну и конечно же этот формат данных крайне популярен в REST API, о которых я писал тут.
#python #web #mobile
Казалось бы, вопрос вполне очевидный, но далеко не для всех. Сегодня расскажу про json и его особенности.
Итак, json - это формат передачи данных. Многие связывают его исключительно с JavaScript и WebDev, но в современном мире это далеко не так. Многие языки способны обрабатывать json и имеют для этого встроенные функции/модули. Например в Python есть встроенный пакет json, который позволит вам легко обработать этот формат и, например, перевести json в обычный питоновский словарь для облегчения работы.
Что же делает json таким популярным? Ну, очевидно, это удобство использования. Если вспоминать ближайшего конкурента, а именно xml, то лично мне json кажется более читабельным и удобным в работе. В своей практике я работал с обоими технологиями, и правды ради обе удобны. У каждой есть свои плюсы и минусы, но и сферы применения так же разнятся.
ᅠ
Но насчёт читабельности, предлагаю оформить одну и ту же структуру данных сначала в json, а затем в xml:
{Вот такая произвольная структура получилась для книги, которую я читаю в данный момент, кстати. Теперь повторим ее на xml:
"name": "JavaScript для чайников",
"authors": [
"Крис Минник",
"Ева Холланд"
],
"publisher": {
"name": "Диалектика",
"email": "info@dialektika.com",
"site": "www.dialektika.com"
}
}
<book>Не знаю как вам, но лично мне json кажется в разы дружелюбнее и читабельнее.
<name>JavaScript для чайников</name>
<authors>
<author>Крис Минник</author>
<author>Ева Холланд</author>
</authors>
<publisher>
<name>Диалектика</name>
<email>info@dialektika.com</email>
<site>www.dialektika.com</site>
</publisher>
</book>
Используется же json чаще всего в случаях, когда нужно быстро получить какой-то ответ от сервера. И речь тут не только о Web. Например, в формате json ответ от сервера могут получать мобильные приложения. Ну и конечно же этот формат данных крайне популярен в REST API, о которых я писал тут.
#python #web #mobile
Сегодня снова хочу рассказать о codeye.ru
Кто забыл или не знал, это наш с @syth0le сервис, которому сегодня официально 2 недели🥳. Мы выходим в открытое тестирование, так что была бы полезна любая помощь. Чем быстрее мы сможем отловить все баги, тем лучше получится конечный продукт.
Из изменений с последнего раза немного:
- появилась полностью функциональная мобильная версия сайта для всех типов устройств
- пофикшены найденные ранее баги
- оптимизирована загрузка страницы и фото на сайт, теперь это должно происходить быстрее
Ссылка ещё раз: codeye.ru
По всем багам и вопросам: @grnbows @syth0le
Больше контактов можно найти на странице codeye.ru/about
#codeye #progress
Кто забыл или не знал, это наш с @syth0le сервис, которому сегодня официально 2 недели🥳. Мы выходим в открытое тестирование, так что была бы полезна любая помощь. Чем быстрее мы сможем отловить все баги, тем лучше получится конечный продукт.
Из изменений с последнего раза немного:
- появилась полностью функциональная мобильная версия сайта для всех типов устройств
- пофикшены найденные ранее баги
- оптимизирована загрузка страницы и фото на сайт, теперь это должно происходить быстрее
Ссылка ещё раз: codeye.ru
По всем багам и вопросам: @grnbows @syth0le
Больше контактов можно найти на странице codeye.ru/about
#codeye #progress
Мета-теги HTML для поиска.
Сегодня давайте быстренько и по факту. Мета-теги - это теги на странице, которые содержат в себе информацию для поиска. Настроенные мета-теги помогут найти ваш сайт в сети. Это одиночный тег, у него есть 2 параметра: name и content.
Давайте рассмотрим самые частые теги:
Description отвечает за отображаемое описание сайта в поиске.
ᅠ
В целом мета-теги играют большую роль в SEO, так что для всех веб-разработчиков это must have :)
#web
Сегодня давайте быстренько и по факту. Мета-теги - это теги на странице, которые содержат в себе информацию для поиска. Настроенные мета-теги помогут найти ваш сайт в сети. Это одиночный тег, у него есть 2 параметра: name и content.
Давайте рассмотрим самые частые теги:
Description отвечает за отображаемое описание сайта в поиске.
<meta name="description" content="Telegram | @prog_way_blog">Keywords отвечает за ключевые слова для поисковых движков.
<meta name="keywords" content="HTML, Meta">Author устанавливает автора страницы.
<meta name="author" content="Denis Putnov">И так далее. Существует гораздо больше тегов, конечно же, например такие интересные как:
<meta name="google-site-verification" content="TOKEN">Эти теги верифицируют ваш сайт в поисковых системах.
<meta name="yandex-verification" content="TOKEN">
ᅠ
В целом мета-теги играют большую роль в SEO, так что для всех веб-разработчиков это must have :)
#web
👍1
Насчёт сред разработки.
Меня и правда достали споры про среды разработки. Постоянно идут разговоры об этом, вот и я решил рассказать о своём опыте. Я пользуюсь VS Code уже пол года. Не думаю, что у меня чрезмерно большой опыт, но за всё время я успел использовать PyCharm, CLion, Android Studio, Eclipse, Sublime Text, Visual Studio Code, Brackets, Notepad++, Jupiter Notebook, Atom и VS Code, соответственно. Вот такой список получился. Тут есть как и обычные редакторы кода, так и полноценные IDE. Я же остановился на VS Code и в моём понимании это что-то среднее.
Почему:
1. Легковесность. Ни одна IDE не может похвастаться такой скоростью работы, как у VS Code.
2. Лидер рынка по количеству расширений. Найти можно что угодно, тут бесспорно.
3. Универсальность. VS Code прекрасно работает как с Python, так и с Dart, JS, C, Go (и другими языками), даже поддерживает многие фреймворки. У VS Code почти идеальная поддержка Flutter и Django, например. В этом я убедился на личном опыте.
Минусов два:
1. Запуск программы. Нет из коробки возможности настроить и сохранить множество сценариев запуска программы со своими настройками, как это реализовано в PyCharm (к слову, хоть такой возможности и нет из коробки, есть плагин, позволяющий добавить это).
2. Отладка всё же не такая шикарная, как в продуктах JetBrains. Там она идеальна на мой взгляд.
ᅠ
Кстати, вот тут я пишу-пишу о том, как прекрасен VS Code, но это далеко не значит, что он - панацея. Я так же пользуюсь и Sublime Text, например (правда, он у меня как текстовый редактор вместо блокнота на винде 🤡), иногда захожу и в PyCharm, потому что отладчик там без лишних слов великолепен. Я не вижу в этом проблемы. Как обычно я и пишу, просто используйте лучшее из каждой технологии и получите идеальный вариант для вас.
Написать о моих расширениях для VS Code? Дайте фидбек @grnbows
#useful
Меня и правда достали споры про среды разработки. Постоянно идут разговоры об этом, вот и я решил рассказать о своём опыте. Я пользуюсь VS Code уже пол года. Не думаю, что у меня чрезмерно большой опыт, но за всё время я успел использовать PyCharm, CLion, Android Studio, Eclipse, Sublime Text, Visual Studio Code, Brackets, Notepad++, Jupiter Notebook, Atom и VS Code, соответственно. Вот такой список получился. Тут есть как и обычные редакторы кода, так и полноценные IDE. Я же остановился на VS Code и в моём понимании это что-то среднее.
Почему:
1. Легковесность. Ни одна IDE не может похвастаться такой скоростью работы, как у VS Code.
2. Лидер рынка по количеству расширений. Найти можно что угодно, тут бесспорно.
3. Универсальность. VS Code прекрасно работает как с Python, так и с Dart, JS, C, Go (и другими языками), даже поддерживает многие фреймворки. У VS Code почти идеальная поддержка Flutter и Django, например. В этом я убедился на личном опыте.
Минусов два:
1. Запуск программы. Нет из коробки возможности настроить и сохранить множество сценариев запуска программы со своими настройками, как это реализовано в PyCharm (к слову, хоть такой возможности и нет из коробки, есть плагин, позволяющий добавить это).
2. Отладка всё же не такая шикарная, как в продуктах JetBrains. Там она идеальна на мой взгляд.
ᅠ
Кстати, вот тут я пишу-пишу о том, как прекрасен VS Code, но это далеко не значит, что он - панацея. Я так же пользуюсь и Sublime Text, например (правда, он у меня как текстовый редактор вместо блокнота на винде 🤡), иногда захожу и в PyCharm, потому что отладчик там без лишних слов великолепен. Я не вижу в этом проблемы. Как обычно я и пишу, просто используйте лучшее из каждой технологии и получите идеальный вариант для вас.
Написать о моих расширениях для VS Code? Дайте фидбек @grnbows
#useful
🔥1
HTTP-Server.
Совсем коротко: недавно на паре увидел достаточно сильную вещь для вёрстки, а именно - пакет http-server на базе ноды. После установки пакета можно запустить весь проект одной командой.
Раньше я поднимал весь development сервер для разработки вёрстки, а сейчас по факту достаточно обычного http-server, который и памяти меньше кушает, и вообще молодец.
Особенно рекомендую его для вёрстки одностраничников, у кого есть такая необходимость. Просто делюсь новыми для себя знаниями и надеюсь, что это будет полезно ещё кому-то.
#web #useful
Совсем коротко: недавно на паре увидел достаточно сильную вещь для вёрстки, а именно - пакет http-server на базе ноды. После установки пакета можно запустить весь проект одной командой.
Раньше я поднимал весь development сервер для разработки вёрстки, а сейчас по факту достаточно обычного http-server, который и памяти меньше кушает, и вообще молодец.
Особенно рекомендую его для вёрстки одностраничников, у кого есть такая необходимость. Просто делюсь новыми для себя знаниями и надеюсь, что это будет полезно ещё кому-то.
#web #useful
🔥1
Ну, моей продуктивности и стабильности явно можно позавидовать. Неожиданно так получилось, что разработка и учеба поглотили всё мое время, так что постов и идей, соответственно, особо не было. Но, с другой стороны, я и не ставил перед собой никаких обязательств по графику в канале, так что всё нормально (оправдываю себя).
Это все таки блог, так что тут я пишу не только что-то полезное, а всё, что хочу, в том числе о своей жизни, а поделиться мне есть чем :)
Начнем с того, что на мне все ещё висит наш прошлый проект - заказанный у нас с @syth0le интернет-магазин. Много времени уделять этому проекту не получалось, так что сам по себе сайт по обговоренным условиям готов на процентов 70-80. После выпуска проекта обязательно закину ссылку сюда.
Во-вторых, я все ещё работаю над codeye, время от времени что-то подправляю. Пока большинство изменений проделаны локально, но до середины октября планируется выпуск codeye.ru в уже более доработанной оболочке, будет красиво.
Кстати, никто не отменял мою увлеченность ботами в телеге, так что я постоянно думаю о своих упавших, но ничего не делаю 🗿
Ну и самая главная новость прошедшей недели, так сказать, - это то, что мы с товарищем серьезно засели за реализацию ещё одного собственного pet-проекта. Это приложение, реализованное на Dart/Flutter и Python REST API, в сфере путешествий. Приложение поможет пользователю уточнить некоторые нюансы о поездке, спланировать маршрут, а вот остальная информация попозже. Хватит пока на этом) На разработку дедлайн в пол года, ссылочку на маркет вкину сюда, как будет готово (если будет 🌚 )
Кстати, идей для постов вроде не мало появилось, так что как минимум в ближайшую неделю поактивничаю)
Ну и конечно же спасибо за прочтение всех этих мыслей, держи жопу❤️
#blog
Это все таки блог, так что тут я пишу не только что-то полезное, а всё, что хочу, в том числе о своей жизни, а поделиться мне есть чем :)
Начнем с того, что на мне все ещё висит наш прошлый проект - заказанный у нас с @syth0le интернет-магазин. Много времени уделять этому проекту не получалось, так что сам по себе сайт по обговоренным условиям готов на процентов 70-80. После выпуска проекта обязательно закину ссылку сюда.
Во-вторых, я все ещё работаю над codeye, время от времени что-то подправляю. Пока большинство изменений проделаны локально, но до середины октября планируется выпуск codeye.ru в уже более доработанной оболочке, будет красиво.
Кстати, никто не отменял мою увлеченность ботами в телеге, так что я постоянно думаю о своих упавших, но ничего не делаю 🗿
Ну и самая главная новость прошедшей недели, так сказать, - это то, что мы с товарищем серьезно засели за реализацию ещё одного собственного pet-проекта. Это приложение, реализованное на Dart/Flutter и Python REST API, в сфере путешествий. Приложение поможет пользователю уточнить некоторые нюансы о поездке, спланировать маршрут, а вот остальная информация попозже. Хватит пока на этом) На разработку дедлайн в пол года, ссылочку на маркет вкину сюда, как будет готово (если будет 🌚 )
Кстати, идей для постов вроде не мало появилось, так что как минимум в ближайшую неделю поактивничаю)
Ну и конечно же спасибо за прочтение всех этих мыслей, держи жопу❤️
#blog
Pet-проекты.
Частенько я о них думаю, говорю, да и тут иногда в постах вспоминаю. Хочу объяснить почему у меня такой ажиотаж касательно всего этого.
Да кто такие эти ваши pet-проекты? Термин применим не только к программированию. Pet-проекты - проекты, которые вы реализуете для получения опыта, демонстрации своих навыков и возможностей, любые личные проекты с благотворительной целью.
Чаще всего многие программисты говорят, что pet-проекты очень сильно помогают в трудоустройстве и это утверждение не без правды. Наличие pet-проектов, особенно если они успешные, - это сильное конкурентное преимущество в ряде случаев. Я с этим согласен.
Но знаете, pet-проекты помогают ещё вот в чем - набраться опыта в реальной разработке хоть чего-то, понять свои проблемы и пробелы в знаниях и всё восполнить. Такие проекты помогают вам в некотором самоопределении, обучении и получении опыта.
Попробуйте, если не пробовали ранее. Даже телеграм-бота написать - уже что-то, пусть это и достаточно просто в большинстве случаев.
#useful
Частенько я о них думаю, говорю, да и тут иногда в постах вспоминаю. Хочу объяснить почему у меня такой ажиотаж касательно всего этого.
Да кто такие эти ваши pet-проекты? Термин применим не только к программированию. Pet-проекты - проекты, которые вы реализуете для получения опыта, демонстрации своих навыков и возможностей, любые личные проекты с благотворительной целью.
Чаще всего многие программисты говорят, что pet-проекты очень сильно помогают в трудоустройстве и это утверждение не без правды. Наличие pet-проектов, особенно если они успешные, - это сильное конкурентное преимущество в ряде случаев. Я с этим согласен.
Но знаете, pet-проекты помогают ещё вот в чем - набраться опыта в реальной разработке хоть чего-то, понять свои проблемы и пробелы в знаниях и всё восполнить. Такие проекты помогают вам в некотором самоопределении, обучении и получении опыта.
Попробуйте, если не пробовали ранее. Даже телеграм-бота написать - уже что-то, пусть это и достаточно просто в большинстве случаев.
#useful
Стоит ли использовать jQuery?
Тоже много слышу об этом, постоянно кто-то спорит за и против. Есть люди, которые полностью не признают библиотеку, а есть и те, кто используют её постоянно. Я немного нейтралитет в этом плане и свежим взглядом попробую описать ситуацию.
Разобраться сходу тут сложно, давайте разберём плюсы и минусы. Начну с минусов:
1. Вес. Чистый jQuery пакет весит от 80 до 255 КБ, что очень даже не мало по меркам веба, ведь это замедляет загрузку страницы. С этим согласен.
2. Медленнее. Не совсем согласен, но озвучить обязан. Считается, что jQuery медленный и что в целом сторонние библиотеки работают медленно, но я бы не стал утверждать об этом.
Да и вроде всё. Серьёзно. Больше я как-то не слышал о минусах, если что - поправьте. А что насчёт плюсов?
1. Ускорение разработки. Очень приятный синтаксис (субъективно). Код выглядит красиво и лаконично.
2. Стандартизация и поддержка. При помощи jQuery можно реализовать кучу вещей, которые работают по разному в разных браузерах. Сегодня с совместимостью все не так круто, как хотелось бы, а jQuery работает почти везде.
3. Много из коробки. Слишком много элементов и механик доступно всего одним вызовом, а на нативе подобный функционал будет занимать гораздо больше места. Да и к чему вообще делать что-то с нуля, если просто есть готовое? Новички никогда не напишут правильный код, а опытные программисты не напишут код на столько же оптимизированным, как это сделано в jQuery.
4. Вес. Да, это и плюс. Минифицированная версия jQuery 2.1.3 (последняя массовая на момент написания поста) весит всего 85 КБ. А вы иногда такие исходники пихаете, что это последнее, что повлияет на загрузку страницы.
Ну и казалось бы, всё - идём и используем. Я все же под сомнением. Лично мое мнение - jQuery морально устарел. Я думаю, что лучше было бы использовать что-то более прогрессивное и легко поддерживаемое, типа Angular, Vue, React. Тут и из коробки возможностей больше, и поддержки от крупных компаний. Сейчас эти фреймворки в тренде, так что я бы поступил именно так. Какое-то такое мнение.
#web #useful
Тоже много слышу об этом, постоянно кто-то спорит за и против. Есть люди, которые полностью не признают библиотеку, а есть и те, кто используют её постоянно. Я немного нейтралитет в этом плане и свежим взглядом попробую описать ситуацию.
Разобраться сходу тут сложно, давайте разберём плюсы и минусы. Начну с минусов:
1. Вес. Чистый jQuery пакет весит от 80 до 255 КБ, что очень даже не мало по меркам веба, ведь это замедляет загрузку страницы. С этим согласен.
2. Медленнее. Не совсем согласен, но озвучить обязан. Считается, что jQuery медленный и что в целом сторонние библиотеки работают медленно, но я бы не стал утверждать об этом.
Да и вроде всё. Серьёзно. Больше я как-то не слышал о минусах, если что - поправьте. А что насчёт плюсов?
1. Ускорение разработки. Очень приятный синтаксис (субъективно). Код выглядит красиво и лаконично.
2. Стандартизация и поддержка. При помощи jQuery можно реализовать кучу вещей, которые работают по разному в разных браузерах. Сегодня с совместимостью все не так круто, как хотелось бы, а jQuery работает почти везде.
3. Много из коробки. Слишком много элементов и механик доступно всего одним вызовом, а на нативе подобный функционал будет занимать гораздо больше места. Да и к чему вообще делать что-то с нуля, если просто есть готовое? Новички никогда не напишут правильный код, а опытные программисты не напишут код на столько же оптимизированным, как это сделано в jQuery.
4. Вес. Да, это и плюс. Минифицированная версия jQuery 2.1.3 (последняя массовая на момент написания поста) весит всего 85 КБ. А вы иногда такие исходники пихаете, что это последнее, что повлияет на загрузку страницы.
Ну и казалось бы, всё - идём и используем. Я все же под сомнением. Лично мое мнение - jQuery морально устарел. Я думаю, что лучше было бы использовать что-то более прогрессивное и легко поддерживаемое, типа Angular, Vue, React. Тут и из коробки возможностей больше, и поддержки от крупных компаний. Сейчас эти фреймворки в тренде, так что я бы поступил именно так. Какое-то такое мнение.
#web #useful
💯1
Библиотечка swiper.js
Чисто случайно я всё больше и больше стал заниматься JavaScript'ом, так что сегодня хочу рассказать об одной библиотечке, с которой столкнулся. Недавно встала необходимость сделать адаптивный слайдер на сайте, а изобретать велосипед не было никакого желания. Тогда я сел в ваши вот эти интернеты и увидел там swiper.js - библиотека, которая позволяет создать и тонко настроить слайдер любой сложности.
Импортировать библиотеку в проект можно с cdn:
Теперь напишем скрипт самого слайдера и так же подключим его. У меня он выглядит так:
ᅠ
Далее быстренько настраиваем CSS и слайдер полностью готов. Для меня эта библиотечка была открытием, так что я бы использовал в будущем именно её.
#web #useful
Чисто случайно я всё больше и больше стал заниматься JavaScript'ом, так что сегодня хочу рассказать об одной библиотечке, с которой столкнулся. Недавно встала необходимость сделать адаптивный слайдер на сайте, а изобретать велосипед не было никакого желания. Тогда я сел в ваши вот эти интернеты и увидел там swiper.js - библиотека, которая позволяет создать и тонко настроить слайдер любой сложности.
Импортировать библиотеку в проект можно с cdn:
<link rel="stylesheet" href="https://unpkg.com/swiper/swiper-bundle.min.css">Далее быстро напишем скелет нашего слайдера:
<script src="https://unpkg.com/swiper/swiper-bundle.min.js"></script>
<button class="swiper-button-next"></button>Тут класс div.card отвечает за одну картинку в слайдере, а button элементы - за кнопки перемотки.
<button class="swiper-button-prev"></button>
<div class="swiper-container">
<div class="swiper-wrapper">
<div class="swiper-slide card"></div>
<div class="swiper-slide card"></div>
</div>
</div>
Теперь напишем скрипт самого слайдера и так же подключим его. У меня он выглядит так:
const slider = document.querySelector('.swiper-container');Возможно код далёк от идеала, но мне было некогда разбираться с красивой записью. Тут вы видите стандартный шаблон из документации, который я немного настроил под себя.
let mySwiper = new Swiper(slider, {
slidesPerView: 1,
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
loop: true,
autoplay: {
delay: 5000,
}
})
ᅠ
Далее быстренько настраиваем CSS и слайдер полностью готов. Для меня эта библиотечка была открытием, так что я бы использовал в будущем именно её.
#web #useful
🆒1
Ещё один оператор присвоения в Python.
Думаю мало кто знает (ведь для многих людей читать спеки - грех), но в python 3.8+ появился новый оператор присвоения - Walrus operator. Я точно не знаю как перевести его на русский, но Google Translate говорит, что это "Моржовой оператор", так что не будем перечить гуру. В чём суть?
Теперь в Python есть два оператора присваивания:
#python
Думаю мало кто знает (ведь для многих людей читать спеки - грех), но в python 3.8+ появился новый оператор присвоения - Walrus operator. Я точно не знаю как перевести его на русский, но Google Translate говорит, что это "Моржовой оператор", так что не будем перечить гуру. В чём суть?
Теперь в Python есть два оператора присваивания:
# обычное присваиваниеПонятнее на примере:
# 1. Присваивает переменной x значение 5
x = 5
# walrus operator
# 1. Присваивает переменной x значение 5
# 2. Возвращает 5
(x := 5)
1. Обычное присваивание:2. Walrus operator:
with open(file) as f:
while True:
chunk = f.read(8192)
if not chunk:
break
chunk_processing(chunk)
with open(file) as f:Запись гораздо короче, как можно заметить, да и в целом повышается читабельность кода. Но лучше не увлекаться, как всегда, а то можно сделать гораздо хуже.
while chink := f.read(8192):
chunk_processing(chunk)
#python
Что такое DOM и основы программирования.
Кстати, крайне часто все используют такое понятие, как DOM, но некоторые до сих пор не понимают что это. Давайте кратко и своими словами:
DOM - модель элементов в виде дерева, определяющая структуру вложенности элементов, их связи между собой. Термин применим не только к HTML, кстати. Он также применяется в XML и других сферах, но начало свое берет именно из этих двух технологий.
DOM-дерево - очень классная штука. С его помощью можно наглядно представить любой каскад элементов, который вы только придумаете. Также очень легко можно отследить наследование в документе, а это часто бывает полезно.
DOM сейчас - фундаментальное понятие в программировании, которое должен знать и понимать каждый. А самое главное, что оно предельно простое.
Суть поста - учите базу. Много есть вещей, которые нужно понимать. Без знания методов списка Python лучше не лезть в Django, так же как и без знания стандартных событий JS лучше не лезть в Angular. Учитесь и будьте учимы, всех благ.
#useful #web
Кстати, крайне часто все используют такое понятие, как DOM, но некоторые до сих пор не понимают что это. Давайте кратко и своими словами:
DOM - модель элементов в виде дерева, определяющая структуру вложенности элементов, их связи между собой. Термин применим не только к HTML, кстати. Он также применяется в XML и других сферах, но начало свое берет именно из этих двух технологий.
DOM-дерево - очень классная штука. С его помощью можно наглядно представить любой каскад элементов, который вы только придумаете. Также очень легко можно отследить наследование в документе, а это часто бывает полезно.
DOM сейчас - фундаментальное понятие в программировании, которое должен знать и понимать каждый. А самое главное, что оно предельно простое.
Суть поста - учите базу. Много есть вещей, которые нужно понимать. Без знания методов списка Python лучше не лезть в Django, так же как и без знания стандартных событий JS лучше не лезть в Angular. Учитесь и будьте учимы, всех благ.
#useful #web
✍1
Синтаксисы SCSS/SASS, работа с препроцессорами.
Казалось бы, что тут такого, но опыт работы с препроцессорами сейчас требуется в большинстве вакансий в front-end сфере.
1. Что это такое?
Препроцессоры CSS своими словами - это надстройка над чистым CSS, предлагающая новый синтаксис и функционал, недоступный ранее. Препроцессор обрабатывает новый синтаксис, на выходе компилируя чистый CSS файл, понятный браузеру. Существует не только SASS, SCSS синтаксиса, но так же я слышал про LESS, но в целом - не важно. Суть везде одна и та же.
2. Зачем?
Препроцессоры позволяют писать код качественнее, быстрее и удобнее. Исходники становятся гораздо меньше в объёме, появляется нормальная вложенность стилей, переменные, аналоги функций, другой дополнительный функционал. Некоторые препроцессоры модифицируют ваш CSS, сделав его совместимым с другими браузерами автоматически. Собственно, от использования препроцессоров одни плюсы.
3. Как использовать?
Есть миллионы способов. Можно установить расширение в VS Code, можно использовать Webpack, Parcel или Prepros, о котором я когда-нибудь, но напишу. Найдите что-то для себя, вам точно понравится.
Ну и надеюсь это было новым для вас.
#web #useful
Казалось бы, что тут такого, но опыт работы с препроцессорами сейчас требуется в большинстве вакансий в front-end сфере.
1. Что это такое?
Препроцессоры CSS своими словами - это надстройка над чистым CSS, предлагающая новый синтаксис и функционал, недоступный ранее. Препроцессор обрабатывает новый синтаксис, на выходе компилируя чистый CSS файл, понятный браузеру. Существует не только SASS, SCSS синтаксиса, но так же я слышал про LESS, но в целом - не важно. Суть везде одна и та же.
2. Зачем?
Препроцессоры позволяют писать код качественнее, быстрее и удобнее. Исходники становятся гораздо меньше в объёме, появляется нормальная вложенность стилей, переменные, аналоги функций, другой дополнительный функционал. Некоторые препроцессоры модифицируют ваш CSS, сделав его совместимым с другими браузерами автоматически. Собственно, от использования препроцессоров одни плюсы.
3. Как использовать?
Есть миллионы способов. Можно установить расширение в VS Code, можно использовать Webpack, Parcel или Prepros, о котором я когда-нибудь, но напишу. Найдите что-то для себя, вам точно понравится.
Ну и надеюсь это было новым для вас.
#web #useful
👍1
Что такое localstorage и как хранить пользовательские данные.
Лично для меня почему-то был открытием тот факт, что существует что-то, помимо cookies. Localstorage, как и следует из названия, - это локальное хранилище для каждого отдельного пользователя. Реализовано все максимально просто.
Имеется 4 основных метода:
При помощи localstorage можно решить ряд задач, таких как, например, сохранение параметров авторизации (сохраняем хэш в localstorage и пользователю больше не придется авторизоваться снова), реализация корзины, автозаполнение форм при перезагрузке и даже хранение каких-либо данных для браузерной игры, например. Можно придумать тысячи задач, которые позволит решить этот объект.
Что по нюансам? Их два:
1. Максимальный размер всего хранилища - 5 МБ, так что не спите туда всем, чем попало.
2. Значение для ключа - это всегда строка.
Насчёт последнего есть небольшая лазейка. На самом деле, сохранить можно все, что можно преобразовать в строку и обратно, будь то списки, объекты и другие типы данных. Просто воспользуйтесь JSON.stringify & JSON.parse.
Кстати, примерно тот же функционал имеет объект window.sessionStorage. думаю, что даже из названия ясно в чем разница 🙂
Надеюсь эта информация кому-то поможет. Спасибо за прочтение ❤️
#web
Лично для меня почему-то был открытием тот факт, что существует что-то, помимо cookies. Localstorage, как и следует из названия, - это локальное хранилище для каждого отдельного пользователя. Реализовано все максимально просто.
Имеется 4 основных метода:
// немного сократим код объявлением константы
const storage = window.localstorage
// сохраняем значение
storage.setItem("name", "Денис")
// получаем значение
let name = storage.getItem("name") // "Денис"
// удаляем значение
storage.removeItem("name")
// полностью очищаем всё хранилище
storage.clear()
При помощи localstorage можно решить ряд задач, таких как, например, сохранение параметров авторизации (сохраняем хэш в localstorage и пользователю больше не придется авторизоваться снова), реализация корзины, автозаполнение форм при перезагрузке и даже хранение каких-либо данных для браузерной игры, например. Можно придумать тысячи задач, которые позволит решить этот объект.
Что по нюансам? Их два:
1. Максимальный размер всего хранилища - 5 МБ, так что не спите туда всем, чем попало.
2. Значение для ключа - это всегда строка.
Насчёт последнего есть небольшая лазейка. На самом деле, сохранить можно все, что можно преобразовать в строку и обратно, будь то списки, объекты и другие типы данных. Просто воспользуйтесь JSON.stringify & JSON.parse.
Кстати, примерно тот же функционал имеет объект window.sessionStorage. думаю, что даже из названия ясно в чем разница 🙂
Надеюсь эта информация кому-то поможет. Спасибо за прочтение ❤️
#web
🆒1
Запускаем своего первого телеграм бота на Python.
Я уже как-то затрагивал ботов обзорно вот в этом посте, сегодня хочу продолжить немного более конкретно. Итак, телеграм сейчас является самой лучшей площадкой для создания ботов. Ни один другой мессенджер или соцсеть не может похвастаться таким же успехом в этом деле. Объяснить это просто:
1. У телеграма прекрасный, удобный, хорошо задокументированный API.
2. Для него уже сейчас существует огромная кодовая база, десятки библиотек на самых разных языках программирования.
Для примера я взял Python, так как этот язык наиболее распространен среди аудитории моего канала, как мне кажется. Для Python есть две неплохие библиотеки - это pyTelegramBotApi и aiogram. Я написал уже где-то ботов 15 за всё время программирования и с уверенностью могу сказать, что на моей практике это лучшие библиотеки.
Aiogram прекрасен своей асинхронностью, а следовательно эффективностью в высоконагруженным проекте, а pyTelegramBotApi - это синхронный младший брат, который, конечно, менее эффективен, но которого более чем достаточно в большинстве задач. pyTelegramBotApi максимально прост, так что в этой библиотеке разберётся любой.
Для начала зарегистрируем нового бота у @botfather. Это не сложно, не будем на этом останавливаться.
Потом установим библиотеку:
Первое, что нужно обсудить - это объект message, который в себя принимает функция
Второе, конечно же, декоратор
Это, конечно же, не единственный декоратор, который есть в библиотеке, но его одного достаточно для простейшего бота.
Насчёт
Это метод, который, как очевидно, отправляет сообщение пользователю. В приведенном выше примере мы отправляем сообщение по идентификатору
Теперь я напишу маленького бота, на примере которого, я надеюсь, вы поймёте тему лучше.
Посмотреть код можно тут.
Взаимодействовать с ботом: @progway_test_bot
И, как всегда, спасибо за прочтение ❤️
#python #chatbot
Я уже как-то затрагивал ботов обзорно вот в этом посте, сегодня хочу продолжить немного более конкретно. Итак, телеграм сейчас является самой лучшей площадкой для создания ботов. Ни один другой мессенджер или соцсеть не может похвастаться таким же успехом в этом деле. Объяснить это просто:
1. У телеграма прекрасный, удобный, хорошо задокументированный API.
2. Для него уже сейчас существует огромная кодовая база, десятки библиотек на самых разных языках программирования.
Для примера я взял Python, так как этот язык наиболее распространен среди аудитории моего канала, как мне кажется. Для Python есть две неплохие библиотеки - это pyTelegramBotApi и aiogram. Я написал уже где-то ботов 15 за всё время программирования и с уверенностью могу сказать, что на моей практике это лучшие библиотеки.
Aiogram прекрасен своей асинхронностью, а следовательно эффективностью в высоконагруженным проекте, а pyTelegramBotApi - это синхронный младший брат, который, конечно, менее эффективен, но которого более чем достаточно в большинстве задач. pyTelegramBotApi максимально прост, так что в этой библиотеке разберётся любой.
Для начала зарегистрируем нового бота у @botfather. Это не сложно, не будем на этом останавливаться.
Потом установим библиотеку:
pip install pyTelegramBotApi
Далее создадим файл bot.py
и напишем вот такой код:import telebotДалее разберем основы:
bot = telebot.TeleBot(токен от @BotFather)
@bot.message_handler(commands=['start'])
def send_welcome(message):
bot.send_message(message.chat.id, "привет")
bot.polling(none_stop=True)
Первое, что нужно обсудить - это объект message, который в себя принимает функция
send_message
. Message - обычный питоновский словарь, к которому мы можем обращаться по ключам. Принт этого объекта можно посмотреть тут.Второе, конечно же, декоратор
bot.message_handler(commands=['start'])
. Весь его функционал заключается в том, что функция, обёрнутая декоратором, будет выполнятся на определенную команду, например. То есть мы можем оформить декоратор bot.message_handler(commands=['help', 'помощь'])
и описанная ниже функция сработает при командах /help
и /помощь
.Это, конечно же, не единственный декоратор, который есть в библиотеке, но его одного достаточно для простейшего бота.
Насчёт
bot.send_message
. Это метод, который, как очевидно, отправляет сообщение пользователю. В приведенном выше примере мы отправляем сообщение по идентификатору
message.chat.id
, то есть в ответ пользователю. У этого класса есть еще много методов, например для отправки фотографии, аудио, игр или других действий.Теперь я напишу маленького бота, на примере которого, я надеюсь, вы поймёте тему лучше.
Посмотреть код можно тут.
Взаимодействовать с ботом: @progway_test_bot
И, как всегда, спасибо за прочтение ❤️
#python #chatbot
Лучшие расширения для VS Code.
Уже достаточно давно VS Code является для меня основным редактором. И ни для кого не секрет, что вся прелесть этого редактора кода заключается в расширениях. Сегодня хочу поделиться теми, без которых я уже точно не проживу.
1. Andromeda.
Прекрасная тема, которая отлично справляется с выделением кода. Установил чуть ли не с самого начала и очень доволен. Я использую мод Andromeda Bordered. Частично оценить тему можно на прикрепленной фотографии.
2. Material Icon Theme.
Расширение, добавляющее красивые и наглядные иконки для всего, что есть в редакторе. Не более.
3. Better Comments.
Расширение выделяет цветом комментарии типа TODO, а так же добавляет свои виды комментирования.
4. Image Preview.
Добавляет миниатюры фотографий к тем строкам, где они подключается. Значительно повышает читабельность кода.
5. Project Manager.
Расширение, которое добавляет удобную панельку для переключения между проектами прямо из среды разработки.
6. Settings Sync.
Бесплатное облачное хранилище, позволяющее хранить настройки вашего VS Code в облаке и легко их восстанавливать при необходимости.
7. Prettier Formatter.
Отличный форматер для верстальщиков. Очень рекомендую.
8. Polacode.
Расширение, позволяющее создавать красивые скриншоты нажатием одной кнопки. На выходе получаем такое же изображение, что прикреплено к посту.
9. Git Graph.
Очень красивый, наглядный и функциональный графический интерфейс для вашего гит. Расширение считывает лог файл и отрисовывает его.
10. Bracket Pair Colorizer 2.
Популярное расширение, окрашивающее парные скобки в одинаковые цвета. Так же улучшает восприятие кода.
Это конечно же не все расширения, которыми я пользуюсь. Я не включал сюда какие-то специфичные расширения для одной из сфер. Тут я собрал лишь общие расширения, которые будут полезны каждому.
Спасибо за прочтение, это важно для меня.
#useful
Уже достаточно давно VS Code является для меня основным редактором. И ни для кого не секрет, что вся прелесть этого редактора кода заключается в расширениях. Сегодня хочу поделиться теми, без которых я уже точно не проживу.
1. Andromeda.
Прекрасная тема, которая отлично справляется с выделением кода. Установил чуть ли не с самого начала и очень доволен. Я использую мод Andromeda Bordered. Частично оценить тему можно на прикрепленной фотографии.
2. Material Icon Theme.
Расширение, добавляющее красивые и наглядные иконки для всего, что есть в редакторе. Не более.
3. Better Comments.
Расширение выделяет цветом комментарии типа TODO, а так же добавляет свои виды комментирования.
4. Image Preview.
Добавляет миниатюры фотографий к тем строкам, где они подключается. Значительно повышает читабельность кода.
5. Project Manager.
Расширение, которое добавляет удобную панельку для переключения между проектами прямо из среды разработки.
6. Settings Sync.
Бесплатное облачное хранилище, позволяющее хранить настройки вашего VS Code в облаке и легко их восстанавливать при необходимости.
7. Prettier Formatter.
Отличный форматер для верстальщиков. Очень рекомендую.
8. Polacode.
Расширение, позволяющее создавать красивые скриншоты нажатием одной кнопки. На выходе получаем такое же изображение, что прикреплено к посту.
9. Git Graph.
Очень красивый, наглядный и функциональный графический интерфейс для вашего гит. Расширение считывает лог файл и отрисовывает его.
10. Bracket Pair Colorizer 2.
Популярное расширение, окрашивающее парные скобки в одинаковые цвета. Так же улучшает восприятие кода.
Это конечно же не все расширения, которыми я пользуюсь. Я не включал сюда какие-то специфичные расширения для одной из сфер. Тут я собрал лишь общие расширения, которые будут полезны каждому.
Спасибо за прочтение, это важно для меня.
#useful
Как передать параметры в программу Python из консоли.
Я думаю многие видели конструкции запуска файлов типа
В общем, штука полезная и знать её точно стоило бы, но как реализовать - непонятно.
Я покажу 2 способа:
Первый через встроенную библиотеку sys. Мы получаем список всех аргументов, которые у нас есть при запуске, и уже после можем по нему итерироваться, например:
Второй вариант уже куда более изящный - там я использую библиотеку argparse:
#python
Я думаю многие видели конструкции запуска файлов типа
python file.py -n ProgWay —url t.me/prog_way_blog
Такие конструкции бывают полезны, когда скрипт запускается с определенными параметрами автоматически. Как самый близкий мне пример, когда нужно реализовать автоматизированный обработчик логов. Мы получаем на сервер новый чанк информации, засовываем её в в скрипт и на выходе получаем проанализированный файлик, например. В общем, штука полезная и знать её точно стоило бы, но как реализовать - непонятно.
Я покажу 2 способа:
Первый через встроенную библиотеку sys. Мы получаем список всех аргументов, которые у нас есть при запуске, и уже после можем по нему итерироваться, например:
import sysТогда при запуске вот такой конструкции:
for param in sys.argv:
print(param)
python file.py -n ProgWay —url t.me/prog_way_blog
Мы получим вывод:file.pyС этим уже можно работать, но при большом количестве аргументов ваш код постепенно будет превращаться в нечитабельное говно с огромным количеством условных конструкций, что не есть хорошо.
-n
ProgWay
—url
t.me/prog_way_blog
Второй вариант уже куда более изящный - там я использую библиотеку argparse:
import sysТогда при вводе той же строки:
import argparse
def getArgs():
parser = argparse.ArgumentParser()
parser.add_argument('-n', '--name', default="ProgWay")
parser.add_argument('-u', '--url', default="t.me/prog_way_blog")
return parser.parse_args()
if __name__ == "__main__":
args = getArgs()
print(args.name)
python file.py -n ProgWay —url t.me/prog_way_blog
Мы получим объект, из которого по ключам можем легко достать любой аргумент.args.name // ProgWayТаким образом организовать получение аргументов из командной строки очень просто и эффективно. Спасибо за прочтение ❤️
args.url // t.me/prog_way_blog
#python
О сокращении операторов сравнения в Python.
По сути своей, операция сравнения в языках программирования - это бинарная операция, то есть сравнение возможно только для двух объектов. Если объект будет один, то не понятно с чем сравнивать, а если больше 2, то не понятно как. Но если нужно организовать проверку переменной на вхождение в какой-то в диапазон, то обычно это делают так:
ᅠ
В Python же подобные цепочки нормально распознаются и они могут быть чуть ли не бесконечными, то есть условие
Такой небольшой хак, если угодно. Казалось бы, очевидно и логично, но многие другие языки программирования такие операции не поддерживают🤔
#python
По сути своей, операция сравнения в языках программирования - это бинарная операция, то есть сравнение возможно только для двух объектов. Если объект будет один, то не понятно с чем сравнивать, а если больше 2, то не понятно как. Но если нужно организовать проверку переменной на вхождение в какой-то в диапазон, то обычно это делают так:
a = 5Но на самом деле в Python можно записать то же самое, только используя обычные правила математики:
if (a > 1) and (a < 9):
print(a)
a = 5В JavaScript, например, при такой записи условие просто не сработает и при любом значении переменной оператор выполнится.
if 1 < a < 9:
print(a)
ᅠ
В Python же подобные цепочки нормально распознаются и они могут быть чуть ли не бесконечными, то есть условие
1 < a < b < c < d < e < 9
в Python считается достаточно обыденным и распознается без проблем.Такой небольшой хак, если угодно. Казалось бы, очевидно и логично, но многие другие языки программирования такие операции не поддерживают🤔
#python