💡 Использование __main__.py
Давайте сначала разберёмся: как большинство людей запускают свои скрипты на Python?
Однажды вы напишете программу, которую захотите использовать и как импортируемый модуль, и как инструмент запускаемый из командной строки. Вы скорей всего в курсе, как обычно поступают в этом случае:
Проблема
Но вы не захотите, чтобы всё ваше приложение теснилось в единственном файле. Разбиение логики по разным файлам упрощает редактирование и поддержку. Например:
__main__.py
Файл main.py вызывается при запуске проекта с флагом модуля — -m. И это весьма удобно, если код предназначен и для использования в качестве модуля, и для запуска из консоли. Думайте об этом файле, как о месте куда можно класть всё, что вы обычно кладёте внутрь if name == 'main'. Давайте изменим проект из примера выше соответственно:
#советы #coding #python
Давайте сначала разберёмся: как большинство людей запускают свои скрипты на Python?
Однажды вы напишете программу, которую захотите использовать и как импортируемый модуль, и как инструмент запускаемый из командной строки. Вы скорей всего в курсе, как обычно поступают в этом случае:
__name__ == '__main__':Когда вы скармливаете скрипт интерпретатору, магическая глобальная переменная name получает значение main. Таким образом мы узнаём, что это не импорт, а именно запуск. Например:
main(sys.argv)
myapp.pyИ это прекрасно работает для одиночного файла.
Проблема
Но вы не захотите, чтобы всё ваше приложение теснилось в единственном файле. Разбиение логики по разным файлам упрощает редактирование и поддержку. Например:
├── README.meНо пользователю, который склонировал проект из репозитория будет непонятно — какой из этих файлов главный? Неужели run.py? А может client.py? Где же искать знакомую строку if name == 'main'? Вот здесь-то main.py и способен проявить себя.
├── requirements.txt
├── setup.py
└── src
├── __init__.py
├── client.py
├── logic.py
├── models.py
└── run.py
__main__.py
Файл main.py вызывается при запуске проекта с флагом модуля — -m. И это весьма удобно, если код предназначен и для использования в качестве модуля, и для запуска из консоли. Думайте об этом файле, как о месте куда можно класть всё, что вы обычно кладёте внутрь if name == 'main'. Давайте изменим проект из примера выше соответственно:
├── README.meИ, вуаля! Теперь можно просто запускать проект как обычный модуль.
├── requirements.txt
├── setup.py
└── myapp
├── __init__.py
├── __main__.py
├── client.py
├── logic.py
├── models.py
-m myappmain.py будет выполняться автоматически. Это идеальное место для размещения интерфейса командной строки и обработки входных аргументов!
#советы #coding #python
📑 Как приложение Reface завоевало мир
На прошлой неделе приложение украинских разработчиков Reface заняло первое место в американском App Store в категории "Развлечения". На этой неделе приложение стало лидером уже всего американского App Store. Приложение появилось в App Store и Google Play семь месяцев назад, и уже успело побывать в топе скачиваемых в сотне разных стран. Но успех на американском рынке — самый значимый, признают в компании.
Роман Могильный, CEO Reface, рассказал о том, как вывести приложение в топ всего App Store и сколько можно на этом заработать.
#статьи
На прошлой неделе приложение украинских разработчиков Reface заняло первое место в американском App Store в категории "Развлечения". На этой неделе приложение стало лидером уже всего американского App Store. Приложение появилось в App Store и Google Play семь месяцев назад, и уже успело побывать в топе скачиваемых в сотне разных стран. Но успех на американском рынке — самый значимый, признают в компании.
Роман Могильный, CEO Reface, рассказал о том, как вывести приложение в топ всего App Store и сколько можно на этом заработать.
#статьи
💡 Уменьшите количество глобальных переменных
«Сведением количества глобальных переменных к одному, вы значительно снижаете шансы нежелательного взаимодействия с другими приложениями, виджетами или библиотеками.»
— Douglas Crockford
Вместо
#советы #coding #js
«Сведением количества глобальных переменных к одному, вы значительно снижаете шансы нежелательного взаимодействия с другими приложениями, виджетами или библиотеками.»
— Douglas Crockford
Вместо
var name = 'Jeffrey';Лучше
var lastName = 'Way';
function doSomething() {...}
console.log(name); // Jeffrey -- or window.name
var DudeNameSpace = {
name : 'Jeffrey',
lastName : 'Way',
doSomething : function() {...}
}
console.log(DudeNameSpace.name); // Jeffrey
Мы уменьшили количество глобальных переменных до одного, странным образом названного, обьекта «DudeNameSpace».#советы #coding #js
Интересуешься компьютерными технологиями, но все ещё плохо в них разбираешься? Переходи в @zametkiitshnika!
На канале ты найдёшь:
- Обучение различным IT-процессам
-Обучение хакингу
- Информацию об обмане в сети и как не стать жертвой интернет-мошенников
Подписывайся и мы научим быть продвинутым IT пользователем!
@zametkiitshnika
На канале ты найдёшь:
- Обучение различным IT-процессам
-Обучение хакингу
- Информацию об обмане в сети и как не стать жертвой интернет-мошенников
Подписывайся и мы научим быть продвинутым IT пользователем!
@zametkiitshnika
🔥 Лучшее на канале за неделю
1. Как приложение Reface завоевало мир
2. Kite — быстрый доступ к документации и автозаполнение на основе ИИ.
3. Использование __main__.py.
1. Как приложение Reface завоевало мир
2. Kite — быстрый доступ к документации и автозаполнение на основе ИИ.
3. Использование __main__.py.
🛠 μPlot — быстрая библиотека с эффективным использованием памяти для создания великолепных 2D-диаграмм на основе Canvas. μPlot предлагает множество типов графиков, вариантов настройки и другие интересные функции.
#инструменты #js
#инструменты #js
📑 JavaScript: область видимости простыми словами
Область видимости — важная концепция, определяющая доступность переменных. Данная концепция лежит в основе замыканий, разделяя переменные на глобальные и локальные.
В этой статье постараемсяь простыми словами объяснить, что такое область видимости в JavaScript.
#статьи #js
Область видимости — важная концепция, определяющая доступность переменных. Данная концепция лежит в основе замыканий, разделяя переменные на глобальные и локальные.
В этой статье постараемсяь простыми словами объяснить, что такое область видимости в JavaScript.
#статьи #js
🛠 Markmap — полезный инструмент JS, который помогает визуализировать большие документы Markdown путем создания интеллект-карт. Он берет все разделы файла .md и представляет их в удобном для просмотра виде и навигации.
#инструменты #js
#инструменты #js
📑 Чем программирование сегодня отличается от программирования 20 лет назад?
В статье описывается часть изменений в случайном порядке, которые произошли в программировании за последние 20 лет.
#статьи
В статье описывается часть изменений в случайном порядке, которые произошли в программировании за последние 20 лет.
#статьи
💡 Объявляйте переменные для 'for" вне циклов
Когда выполняете долгий цикл «for» не заставляйте делать движок больше работы чем нужно.
Плохо:
Лучше так:
Когда выполняете долгий цикл «for» не заставляйте делать движок больше работы чем нужно.
Плохо:
for(var i = 0; i < someArray.length; i++) {
var container = document.getElementById('container');
container.innerHtml += 'my number: ' + i;
console.log(i);
}
Обратите внимание как мы должны высчитываем длинну массива для каждой итерации и как мы обходим дерево для поиска #container.Лучше так:
var container = document.getElementById('container');
for(var i = 0, len = someArray.length; i < len; i++) {
container.innerHtml += 'my number: ' + i;
console.log(i);
}
#советы #coding🔥 Лучшее на канале за неделю
1. Изменения, которые произошли в программировании за последние 20 лет.
2. Markmap — полезный инструмент JS, который помогает визуализировать большие документы Markdown.
3. Объявляйте переменные для 'for" вне циклов.
1. Изменения, которые произошли в программировании за последние 20 лет.
2. Markmap — полезный инструмент JS, который помогает визуализировать большие документы Markdown.
3. Объявляйте переменные для 'for" вне циклов.
🛠 Event Cards — CodePen компонента React для показа event cards или других элементов пользовательского интерфейса с миниатюрами. У него красивый современный дизайн и простая, но очень эффектная анимация.
#инструменты #js
#инструменты #js
📑 Объектно-ориентированный JavaScript: дескрипторы
Над каждым свойством любого объекта в JavaScript можно провести определённый набор манипуляций. Свойство можно записать, изменить, получить значение, а с помощью цикла
#статьи #js
Над каждым свойством любого объекта в JavaScript можно провести определённый набор манипуляций. Свойство можно записать, изменить, получить значение, а с помощью цикла
for .. in или метода Object.keys перечислить все свойства объекта. Вполне стандартный набор операций для работы с объектами, к которому вы, скорее всего, уже привыкли. До релиза стандарта ES5 все эти “качества” объекта изменить было невозможно, но теперь для каждого свойства можно детально описать модель его поведения с помощью дескрипторов.#статьи #js