Forwarded from Инжиниринг Данных (Dmitry Anoshin)
Отличные примеры про использование error handler in Python "Python Try and Except Statements – How to Handle Exceptions in Python" https://www.freecodecamp.org/news/python-try-and-except-statements-how-to-handle-exceptions-in-python/
freeCodeCamp.org
Python Try and Except Statements – How to Handle Exceptions in Python
When coding in Python, you can often anticipate runtime errors even in a syntactically and logically correct program. These errors can be caused by invalid inputs or some predictable inconsistencies. In Python, you can use the try and the except blo...
Forwarded from Инжиниринг Данных (Dmitry Anoshin)
Статья написано про конкретный пример - пароли в Python, то есть о том, что нельзя хранить их в коде. На самом деле топик достаточно обширный. В облаках я уже привык использовать решения для безопасности, где я могу хранить ключи - AWS Secret Manager или Azure Key Vault. А как вы храните пароли, если не используете облако?
Другая проблема - это ротация паролей и ключей каждые 90 дней. Например, AWS Secret может сам меня ключ IAM secret key и подставлять в код - идеальный сценарий. У Azure, да и AWS можно вообще обходится без паролей, что тоже очень хорошая практика. Но интересно как с этим on premise?
"Stop Hardcoding Sensitive Data in Your Python Applications | by Ahmed Besbes | Sep, 2021 | Towards Data Science" https://towardsdatascience.com/stop-hardcoding-sensitive-data-in-your-python-applications-86eb2a96bec3
Другая проблема - это ротация паролей и ключей каждые 90 дней. Например, AWS Secret может сам меня ключ IAM secret key и подставлять в код - идеальный сценарий. У Azure, да и AWS можно вообще обходится без паролей, что тоже очень хорошая практика. Но интересно как с этим on premise?
"Stop Hardcoding Sensitive Data in Your Python Applications | by Ahmed Besbes | Sep, 2021 | Towards Data Science" https://towardsdatascience.com/stop-hardcoding-sensitive-data-in-your-python-applications-86eb2a96bec3
Forwarded from Data Science | Machinelearning [ru]
process mining: 100 строк кода и генератор логов у нас в руках
Продакт-менеджерам посвящается...
Заступая на территорию proccess mining, каждый участник рано или поздно будет нуждаться в наборе логов событий, отражающих те или иные специфические моменты в процессах. Эти логи нужны как на этапе демонстрации решения, подсвечивания определенных вопросов, так и для отработки алгоритмов или же тестов на производительность. Оба рекомендуемых сценария «взять с продуктивных систем» или «взять из интернета» терпят фиаско. Как правило, это очень
малые датасеты, слабо удовлетворяющие потребностям как по наполнению, так и по объему.
статья
Продакт-менеджерам посвящается...
Заступая на территорию proccess mining, каждый участник рано или поздно будет нуждаться в наборе логов событий, отражающих те или иные специфические моменты в процессах. Эти логи нужны как на этапе демонстрации решения, подсвечивания определенных вопросов, так и для отработки алгоритмов или же тестов на производительность. Оба рекомендуемых сценария «взять с продуктивных систем» или «взять из интернета» терпят фиаско. Как правило, это очень
малые датасеты, слабо удовлетворяющие потребностям как по наполнению, так и по объему.
статья
Forwarded from Simulative
⚙️ Зачем нужны конфиги в Python и как работать с ними правильно?
Конфиги - необходимый атрибут в любом проекте, хотя некоторые программисты недооценивают их важность. С помощью конфигов удобно хранить данные доступов, прописывать пути до папок/логов и т.д.
Ок, то что конфиги нужны - вопросов нет. Но как с ними лучше работать? Существует большое количество мнений по этому поводу, но мы в своих проектах привыкли пользоваться .ini-файлами и библиотекой configparser. Такой подход снимает кучу головной боли - один раз мы прописываем все в конфиге и на все оставшееся время вообще забываем про него.
✅ Кстати, совет: если над проектом работает сразу несколько человек, то можно добавить конфиг в gitignore, чтобы у каждого была своя локальная копия с нужными настройками. Тогда конфиг не будет перезатираться при каждом git pull.
А как у вас обстоят дела с конфигами? Используете их или по-старинке храните все прямо в коде?)
Конфиги - необходимый атрибут в любом проекте, хотя некоторые программисты недооценивают их важность. С помощью конфигов удобно хранить данные доступов, прописывать пути до папок/логов и т.д.
Ок, то что конфиги нужны - вопросов нет. Но как с ними лучше работать? Существует большое количество мнений по этому поводу, но мы в своих проектах привыкли пользоваться .ini-файлами и библиотекой configparser. Такой подход снимает кучу головной боли - один раз мы прописываем все в конфиге и на все оставшееся время вообще забываем про него.
✅ Кстати, совет: если над проектом работает сразу несколько человек, то можно добавить конфиг в gitignore, чтобы у каждого была своя локальная копия с нужными настройками. Тогда конфиг не будет перезатираться при каждом git pull.
А как у вас обстоят дела с конфигами? Используете их или по-старинке храните все прямо в коде?)
Forwarded from Python School
Преобразуем список в словарь при помощи генератора словаря (ч.1)
Для преобразования списка Python в словарь также можно использовать генератор словаря.
Генератор словаря похож на генератор списка в том, что оба они создают новое значение соответствующего типа данных.
Что касается синтаксиса, в генераторе словаря используются фигурные скобки {}, а в генераторе списка — квадратные [ ].
Для преобразования списка Python в словарь также можно использовать генератор словаря.
Генератор словаря похож на генератор списка в том, что оба они создают новое значение соответствующего типа данных.
Что касается синтаксиса, в генераторе словаря используются фигурные скобки {}, а в генераторе списка — квадратные [ ].
Forwarded from Python School
Преобразуем список в словарь при помощи генератора словаря (ч.2)
Для начала мы объявили список фруктов (fruits), где хранятся их названия, которые мы хотим перенести в словарь.
Затем мы использовали генератор словаря, чтобы пройтись по каждому элементу в списке fruits. Для каждого фрукта в нашем списке мы добавили элемент в новый словарь. При этом каждому фрукту мы присвоили значение In stock.
Для начала мы объявили список фруктов (fruits), где хранятся их названия, которые мы хотим перенести в словарь.
Затем мы использовали генератор словаря, чтобы пройтись по каждому элементу в списке fruits. Для каждого фрукта в нашем списке мы добавили элемент в новый словарь. При этом каждому фрукту мы присвоили значение In stock.
Forwarded from Python School
ASCII-текст
По умолчанию json.dump проверяет, имеет ли ваш текст в словаре кодировку ASCII. Если присутствуют символы, отличные от ASCII, они автоматически экранируются.
Но это не всегда приемлемо. Во многих случаях вы бы хотели сохранить символы Unicode нетронутыми.
По умолчанию json.dump проверяет, имеет ли ваш текст в словаре кодировку ASCII. Если присутствуют символы, отличные от ASCII, они автоматически экранируются.
Но это не всегда приемлемо. Во многих случаях вы бы хотели сохранить символы Unicode нетронутыми.
Forwarded from Python Academy
Сопоставление шаблонов в python 3.10
Уже сегодня, 4-го октября, должна выйти в релиз версия Python 3.10, но пока этого еще не произошло)
Одной из добавленных фишек стала конструкция сопоставления с шаблоном
В с++ допускается проверка только целочисленных типов и перечислений, в java, с#, go... также помимо этого еще возможно использовать в
В python решили не ограничиваться данной функциональностью и добавить возможность работать с любыми типами. Помимо этого мы можем добавлять в шаблоны альтернативу, перечисляя все возможные значения через оператор
#switch #match
Уже сегодня, 4-го октября, должна выйти в релиз версия Python 3.10, но пока этого еще не произошло)
Одной из добавленных фишек стала конструкция сопоставления с шаблоном
match/case
по аналогии с конструкцией switch/case
из других языков. Для тех, кто вообще не понимает о чем речь, switch/case
- это конструкция, позволяющая определить различное поведение в зависимости от значения передаваемого паттерна.В с++ допускается проверка только целочисленных типов и перечислений, в java, с#, go... также помимо этого еще возможно использовать в
switch/case
строки. В python решили не ограничиваться данной функциональностью и добавить возможность работать с любыми типами. Помимо этого мы можем добавлять в шаблоны альтернативу, перечисляя все возможные значения через оператор
|
(или), а также работать с более сложными вложенными шаблонами и накладывать однострочные условия на шаблон.#switch #match
Forwarded from Инжиниринг Данных (Dmitry Anoshin)
Medium
What’s __init__ for me?
Designing for Python package import patterns
Forwarded from Python Academy
Forwarded from Python School
Процесс делегирования в Python (ч.2)
В примере показан класс, охватывающий поведение файла и преобразующий данные из нижнего в верхний регистр
Метод write() в классе upcase конвертирует строку из нижнего в верхний регистр до вызова другого метода. Собственно сама делегация осуществляется за счет использования объекта self._out.
В примере показан класс, охватывающий поведение файла и преобразующий данные из нижнего в верхний регистр
Метод write() в классе upcase конвертирует строку из нижнего в верхний регистр до вызова другого метода. Собственно сама делегация осуществляется за счет использования объекта self._out.
Forwarded from Python Academy
Сопоставление шаблонов в python 3.10
Уже сегодня, 4-го октября, должна выйти в релиз версия Python 3.10, но пока этого еще не произошло)
Одной из добавленных фишек стала конструкция сопоставления с шаблоном
В с++ допускается проверка только целочисленных типов и перечислений, в java, с#, go... также помимо этого еще возможно использовать в
В python решили не ограничиваться данной функциональностью и добавить возможность работать с любыми типами. Помимо этого мы можем добавлять в шаблоны альтернативу, перечисляя все возможные значения через оператор
#switch #match
Уже сегодня, 4-го октября, должна выйти в релиз версия Python 3.10, но пока этого еще не произошло)
Одной из добавленных фишек стала конструкция сопоставления с шаблоном
match/case
по аналогии с конструкцией switch/case
из других языков. Для тех, кто вообще не понимает о чем речь, switch/case
- это конструкция, позволяющая определить различное поведение в зависимости от значения передаваемого паттерна.В с++ допускается проверка только целочисленных типов и перечислений, в java, с#, go... также помимо этого еще возможно использовать в
switch/case
строки. В python решили не ограничиваться данной функциональностью и добавить возможность работать с любыми типами. Помимо этого мы можем добавлять в шаблоны альтернативу, перечисляя все возможные значения через оператор
|
(или), а также работать с более сложными вложенными шаблонами и накладывать однострочные условия на шаблон.#switch #match
Forwarded from Python Academy
Специальная переменная __name__
Когда интерпретатор Python читает файл, то сначала он устанавливает несколько специальных переменных (пример). Одной из таких переменных является
Если скрипт был запущен напрямую, то в переменную присваивается значение
Типичный пример использования такой переменной — создание точки входа в программу. Про это уже был ранее пост.
Вообще атрибут
#переменные
Когда интерпретатор Python читает файл, то сначала он устанавливает несколько специальных переменных (пример). Одной из таких переменных является
__name__
.Если скрипт был запущен напрямую, то в переменную присваивается значение
__main__
, в случае импорта — название модуля.Типичный пример использования такой переменной — создание точки входа в программу. Про это уже был ранее пост.
Вообще атрибут
__name__
по умолчанию также ставится всем классам и функциям.#переменные