#ВДзене
Друзья, хочу коротко поделиться мыслями о статьях в Дзене
# 1 Работа с конфигами
Идея появилась, когда читал статью про конфиг на TOML и там в основном классе конфига был указан путь до файла с конфигом, посчитал, что это не секьюрно. Плюс в статье не было раскрыто как работать с несколькими конфигами.
#python #SecretStr #config #TOML #pydantic #typing
# 2 Запуск скриптов на разных версиях python
Идея статьи в том, что если каждую программу мы будем помещать в отдельную виртуальную среду со своим набором библиотек, то в случае обновления библиотек, версий python не будет проблем с совместимостью версий.
#python #venv #shebang
# 3 Telegram Bot прогноза погоды
Я не нашел в интернете статью по работе с Яндекс API. Даже на Яндекс Практикуме бот сделан на Open Weather API
В рамках статьи я реализовал пример, когда четко видно что делает основной класс бота, а сложные вычисления убраны в другие классы.
#python #pyTelegramBotAPI #TelegramBot #YandexAPI
Друзья, хочу коротко поделиться мыслями о статьях в Дзене
# 1 Работа с конфигами
Идея появилась, когда читал статью про конфиг на TOML и там в основном классе конфига был указан путь до файла с конфигом, посчитал, что это не секьюрно. Плюс в статье не было раскрыто как работать с несколькими конфигами.
#python #SecretStr #config #TOML #pydantic #typing
# 2 Запуск скриптов на разных версиях python
Идея статьи в том, что если каждую программу мы будем помещать в отдельную виртуальную среду со своим набором библиотек, то в случае обновления библиотек, версий python не будет проблем с совместимостью версий.
#python #venv #shebang
# 3 Telegram Bot прогноза погоды
Я не нашел в интернете статью по работе с Яндекс API. Даже на Яндекс Практикуме бот сделан на Open Weather API
В рамках статьи я реализовал пример, когда четко видно что делает основной класс бота, а сложные вычисления убраны в другие классы.
#python #pyTelegramBotAPI #TelegramBot #YandexAPI
#ЗаЧаем
Друзья, к вашему вниманию анонс.
Я решил изменить подачу материала.
Посты о статьях в Дзене я переместил в отдельный пост выше.
Обзорные посты (с моими комментариями зачем эта статья появилась на свет) в телеграмме будут выходить с задержкой от нескольких дней, до нескольких недель.
Для того, чтобы видеть выход статей на момент публикации просьба подписаться на канал в Дзен
Каждая статья будет иметь материал в GitLab.
Появились новые рубрики для постов в телеграмм:
#ЧистыйКот
Короткие посты о чистом коде, хотя сразу скажу, у меня свой взгляд на чистый код на Python. Он точно отличается от того, что декларируют разработчики Python.
#ТаковПуть
Короткие посты об интересных, а местами удивительных моментах в языке Python.
#ЗаЧаем
Анонсы и разговоры на отвлеченные темы
Друзья, к вашему вниманию анонс.
Я решил изменить подачу материала.
Посты о статьях в Дзене я переместил в отдельный пост выше.
Обзорные посты (с моими комментариями зачем эта статья появилась на свет) в телеграмме будут выходить с задержкой от нескольких дней, до нескольких недель.
Для того, чтобы видеть выход статей на момент публикации просьба подписаться на канал в Дзен
Каждая статья будет иметь материал в GitLab.
Появились новые рубрики для постов в телеграмм:
#ЧистыйКот
Короткие посты о чистом коде, хотя сразу скажу, у меня свой взгляд на чистый код на Python. Он точно отличается от того, что декларируют разработчики Python.
#ТаковПуть
Короткие посты об интересных, а местами удивительных моментах в языке Python.
#ЗаЧаем
Анонсы и разговоры на отвлеченные темы
👍1
#ТаковПуть
Python — это язык программирования с открытым исходным кодом, который можно свободно просматривать, скачивать, модифицировать и устанавливать.
Обычно Python устанавливают с официального сайта:
https://www.python.org
Однако с GitHub возможно не только скачать последнюю версию Python, но и получить доступ к версиям, которые ещё не были включены в официальные дистрибутивы. Это может быть полезно для тестирования новых функций и собственных сборок!
Python — это язык программирования с открытым исходным кодом, который можно свободно просматривать, скачивать, модифицировать и устанавливать.
Обычно Python устанавливают с официального сайта:
https://www.python.org
Однако с GitHub возможно не только скачать последнюю версию Python, но и получить доступ к версиям, которые ещё не были включены в официальные дистрибутивы. Это может быть полезно для тестирования новых функций и собственных сборок!
git clone https://github.com/python/cpython
cd cpython
👍1
#ЧистыйКот
Простота и ясность
Код должен быть написан так, чтобы через год после его создания не возник вопрос:
Некоторые разработчики могут думать, что их код должен быть понятен только им, но это приводит к тому, что они сами себе, а не другим создают дополнительные трудности.
Читаемый код улучшает качество, упрощает поддержку и делает совместную работу эффективнее.
Простота и ясность
Код должен быть написан так, чтобы через год после его создания не возник вопрос:
«Да что тут вообще происходит?»
Некоторые разработчики могут думать, что их код должен быть понятен только им, но это приводит к тому, что они сами себе, а не другим создают дополнительные трудности.
Читаемый код улучшает качество, упрощает поддержку и делает совместную работу эффективнее.
👍1
#ТаковПуть
GIL (Global Interpreter Lock)
GIL в Python является ключевым элементом, который обеспечивает синхронизацию потоков и предотвращает конфликты, но тормозит работу параллельных вычислений.
GIL гарантирует, что только один поток может выполнять байт-код Python в любой момент времени.
В Python 3.13 появилась экспериментальная возможность отключить GIL. И ожидается, что в версии 3.14 сборка без GIL станет стандартом.
Из моего опыта, собирать Python с отключенным GIL на Linux занимает меньше времени, чем на Windows.
GIL (Global Interpreter Lock)
GIL в Python является ключевым элементом, который обеспечивает синхронизацию потоков и предотвращает конфликты, но тормозит работу параллельных вычислений.
GIL гарантирует, что только один поток может выполнять байт-код Python в любой момент времени.
В Python 3.13 появилась экспериментальная возможность отключить GIL. И ожидается, что в версии 3.14 сборка без GIL станет стандартом.
Из моего опыта, собирать Python с отключенным GIL на Linux занимает меньше времени, чем на Windows.
#ТаковПуть
Продолжаем обсуждать GIL
В Python 3.13 появилась возможность не только отключить GIL при сборке из исходников, что может оказаться для многих сложным, но для нашего с вами удобства при установке Python 3.13 появилась опция, которая позволяет установить два интерпретатора на компьютер: с GIL и без него. (см. скриншот)
На примере ниже видно, на сколько Python быстрее без GIL (python3.13t). На скриншоте результат.
Продолжаем обсуждать GIL
В Python 3.13 появилась возможность не только отключить GIL при сборке из исходников, что может оказаться для многих сложным, но для нашего с вами удобства при установке Python 3.13 появилась опция, которая позволяет установить два интерпретатора на компьютер: с GIL и без него. (см. скриншот)
На примере ниже видно, на сколько Python быстрее без GIL (python3.13t). На скриншоте результат.
from threading import Thread
from time import time
def count(n):
while n > 0:
n -= 1
def run_threads():
args = (10**8,)
thread1 = Thread(target=count, args=args)
thread2 = Thread(target=count, args=args)
thread1.start()
thread2.start()
thread1.join()
thread2.join()
def main():
start_time = time()
run_threads()
finish = time() - start_time
print(f"Время выполнения: {finish:.2f} сек")
if __name__ == "__main__":
main()
❤1
#ЧистыйКот
Точка входа
В Python-программе, как правило, выделяется один основной файл, который служит точкой входа для выполнения программы. Традиционно этот файл располагается в корне проекта и носит имя
Из файла
Файл
Точка входа
В Python-программе, как правило, выделяется один основной файл, который служит точкой входа для выполнения программы. Традиционно этот файл располагается в корне проекта и носит имя
main.py.Расположение в корне и наименование не являются строго обязательными.Для себя я выработал определенный стиль написания программ, в частности, даже если весь проект на Python состоит из одного файла, я создаю второй файл с названием
Например, у меня не прижилось наименование main.py, я называю такой файл app.py.
app.py.│ app.py
│ my_prog.py
Из файла
app.py я вызываю основную программу, которая лежит в первом файле. Файл
app.py обычно содержит примерно такой код:from my_prog import MyProg
if __name__ == '__main__':
prog = MyProg()
prog.run()
Я не настаиваю на своем подходе к неймингу и размещению компонентов программы. Однако считаю важным выработать привычку создавать отдельную точку входа, даже для одномодульных программ.
👍1
#ТаковПуть
Рассмотрим варианты работы с Excel из Python. Часть 1.
1) Самый простой способ это использовать внешние библиотеки. К примеру:
2) Можно подключиться к объектной модели Excel, Outlook, Word и другим личным программам компании Microsoft напрямую!
3) Если у вас есть доступ к Visual Studio, вы можете установить интерпретатор IronPython и подключаться к библиотекам Excel, Word и пр через промежуточный язык CRL.
Подключение к библиотеке Excel
Продолжение следует..
Рассмотрим варианты работы с Excel из Python. Часть 1.
1) Самый простой способ это использовать внешние библиотеки. К примеру:
pip install openpyxl
2) Можно подключиться к объектной модели Excel, Outlook, Word и другим личным программам компании Microsoft напрямую!
pip install pywin32
3) Если у вас есть доступ к Visual Studio, вы можете установить интерпретатор IronPython и подключаться к библиотекам Excel, Word и пр через промежуточный язык CRL.
pip install clr
Подключение к библиотеке Excel
import clr
clr.AddReference("Microsoft.Office.Interop.Excel")
import Microsoft.Office.Interop.Excel as Excel
Продолжение следует..
#ТаковПуть
Рассмотрим варианты работы с Excel на Python. Часть 2
4) Так как в Windows есть встроенный интерпретатор C#.
Можно написать на языке C# dll, которая будет взаимодействовать с объектами excel, word и т.д. И при сборке dll указать зависимость с нужной библиотекой:
Так как интерпретатор CPython не умеет работать с C#, есть 2 варианта:
4.1) Подключиться через библиотеку, которая умеет обрабатывать C#:
Эта библиотека внутри содержит класс clr
4.2) либо если есть доступ к Visual Studio и он используется для разработки на языке C++ и при этом нет возможности установить IronPython. Необходимо написать обёртку на C++ к C#.
И с компилировать на компиляторе cl
Результирующую dll можно будет подключить к python через встроенную библиотеку:
Рассмотрим варианты работы с Excel на Python. Часть 2
4) Так как в Windows есть встроенный интерпретатор C#.
Можно написать на языке C# dll, которая будет взаимодействовать с объектами excel, word и т.д. И при сборке dll указать зависимость с нужной библиотекой:
%WINDIR%\CSC.EXE /r:Microsoft.Office.Interop.Excel.dll "путь к файлу .cs"
Так как интерпретатор CPython не умеет работать с C#, есть 2 варианта:
4.1) Подключиться через библиотеку, которая умеет обрабатывать C#:
pip install pythonnet
Эта библиотека внутри содержит класс clr
import clr
4.2) либо если есть доступ к Visual Studio и он используется для разработки на языке C++ и при этом нет возможности установить IronPython. Необходимо написать обёртку на C++ к C#.
#using "наша dll на cs"
И с компилировать на компиляторе cl
cl /clr /LD "наша обёртка на плюсах.cpp"
Результирующую dll можно будет подключить к python через встроенную библиотеку:
from ctype import CDLL
#ВДзене
Друзья, коротко делюсь мыслями о новых статьях в Дзене
# 4 Создание службы PostgreSQL
Статья может быть полезна при необходимости установки нескольких версий PostgreSQL на одной машине или для персональных настроек.
В статье рассматриваются особенности работы с кодировками в Windows. Только из-за кодировок я бы не рекомендовал никому ставить PostgreSQL на Windows, хотя статья посвящена именно установке на нем.
#PostgreSQL #cmd
# 5 Создание БД PostgreSQL
Данная статья является продолжением предыдущей. Тут описывается создание bat-файла, который будет создавать БД, пользователя, таблицы и заполнять таблицы данными.
Плюс рассматривается установка драйвера и подключение к БД через host+port с помощью pyodbc на Python.
#PostgreSQL #python #pyodbc
Предыдущие статьи.
Друзья, коротко делюсь мыслями о новых статьях в Дзене
# 4 Создание службы PostgreSQL
Статья может быть полезна при необходимости установки нескольких версий PostgreSQL на одной машине или для персональных настроек.
В статье рассматриваются особенности работы с кодировками в Windows. Только из-за кодировок я бы не рекомендовал никому ставить PostgreSQL на Windows, хотя статья посвящена именно установке на нем.
#PostgreSQL #cmd
# 5 Создание БД PostgreSQL
Данная статья является продолжением предыдущей. Тут описывается создание bat-файла, который будет создавать БД, пользователя, таблицы и заполнять таблицы данными.
Плюс рассматривается установка драйвера и подключение к БД через host+port с помощью pyodbc на Python.
#PostgreSQL #python #pyodbc
P.S.
В других статьях я буду прикреплять готовый bat-файл со всеми необходимыми
установками для поднятия БД, а за разъяснениями работы батника буду ссылаться на эти две статьи.
Предыдущие статьи.
🔥1
#ЧистыйКот
Модульность
Когда мы пишем программы, важно разделять архитектуру программы на модули и пакеты. Это делает код более понятным и удобным в обслуживании.
Модуль в Python — это любой файл с расширением .py. Он может содержать функции, классы и другие объекты, которые можно использовать в других частях программы.
Пакет — это папка, которая содержит файл __init__.py, который призван собирать все модули в папке в единую структуру.
Модульность позволяет разбить программу на более мелкие и управляемые части, что упрощает разработку, тестирование и обслуживание кода.
Не забывайте разбивать код на модули и пакеты. Это поможет вам создавать более качественный и поддерживаемый код.
Модульность
Когда мы пишем программы, важно разделять архитектуру программы на модули и пакеты. Это делает код более понятным и удобным в обслуживании.
Модуль в Python — это любой файл с расширением .py. Он может содержать функции, классы и другие объекты, которые можно использовать в других частях программы.
Пакет — это папка, которая содержит файл __init__.py, который призван собирать все модули в папке в единую структуру.
Модульность позволяет разбить программу на более мелкие и управляемые части, что упрощает разработку, тестирование и обслуживание кода.
Не забывайте разбивать код на модули и пакеты. Это поможет вам создавать более качественный и поддерживаемый код.
#ТаковПуть
Для любителей экзотики, можно писать python скрипты и запускать их на языке VBA.
Для этого необходимо установить плагин ExcelPython и подключить его в редакторе VBA через Tools->References
Для любителей экзотики, можно писать python скрипты и запускать их на языке VBA.
Для этого необходимо установить плагин ExcelPython и подключить его в редакторе VBA через Tools->References
#ТаковПуть
Присваивания значений переменным
Все примеры ниже приведут к идентичному результату
Присваивания значений переменным
Все примеры ниже приведут к идентичному результату
x = 1
y = 2
x, y = 1, 2
x, y = [1, 2]
x, y = (1, 2)
x, y = {1, 2}
#ТаковПуть
Объединяем списки (list)
Объединяем списки (list)
fruits = ['яблоко','мандарин']
vegetables = ['лук', 'помидор']
meal = [*fruits, *vegetables]
print(meal)
#Output:
#['яблоко', 'мандарин', 'лук', 'помидор']
👍1
#ТаковПуть
Продолжаем примеры упаковки распаковки переменных
Упаковка в list и dict:
Продолжаем примеры упаковки распаковки переменных
Упаковка в list и dict:
a = [1, 2]
b = {3, 4}
c = (5, 6)
*list_data1, = *a, *b, *c
print(list_data1)
#Output: [1, 2, 3, 4, 5, 6]
*list_data2, = a, b, c
print(list_data2)
#Output: [[1, 2], {3, 4}, (5, 6)]
dict_data = dict(list_data2)
print(dict_data)
#Output: {1: 2, 3: 4, 5: 6}
👍1
#ВДзене
Друзья, коротко делюсь мыслями о новых статьях в Дзене
# 6 Работа с Git на Windows
В своих статьях я часто ссылаюсь на GitLab. Решил написать статью про установку, настройку и работу с Git и GitLab
Думаю, что надо написать ещё несколько статей про Git, CI/CD, ведение документации и автоматизацию с GitLab.
#git
# 7 Создание XLSB файла
Случайно обнаружил, что в интернете вообще нет пояснений, как создавать xlsb файлы на Python. Решил реализовать решение в виде готовой программы.
Скоро выпущу статью про скрапинг террористов, где эту программу применю.
#python #excel #pywin32
#8 Про совместную работу в Jupyter Notebook
Статья написана по памяти. На одной из моих работ было реализовано пространство для совместной работы в Jupyter, решил поделиться решением.
Единое пространство для работы на Python – очень полезная вещь. Как минимум, это позволяет подсматривать за кодингом коллег, что полезно в обучающих целях.
#python #team
Предыдущие статьи.
Друзья, коротко делюсь мыслями о новых статьях в Дзене
# 6 Работа с Git на Windows
В своих статьях я часто ссылаюсь на GitLab. Решил написать статью про установку, настройку и работу с Git и GitLab
Думаю, что надо написать ещё несколько статей про Git, CI/CD, ведение документации и автоматизацию с GitLab.
#git
# 7 Создание XLSB файла
Случайно обнаружил, что в интернете вообще нет пояснений, как создавать xlsb файлы на Python. Решил реализовать решение в виде готовой программы.
Скоро выпущу статью про скрапинг террористов, где эту программу применю.
#python #excel #pywin32
#8 Про совместную работу в Jupyter Notebook
Статья написана по памяти. На одной из моих работ было реализовано пространство для совместной работы в Jupyter, решил поделиться решением.
Единое пространство для работы на Python – очень полезная вещь. Как минимум, это позволяет подсматривать за кодингом коллег, что полезно в обучающих целях.
#python #team
Предыдущие статьи.
👍1