Python Misc - andyceo/documentation GitHub Wiki
from skimage.metrics import structural_similarity as ssim
from PIL import Image
def similarity(self, orig: Image, ext: Image):
"""Calculate the similarity level of the images"""
orig_np = np.array(orig.convert('L'))
ext_np = np.array(ext.convert('L'))
return ssim(orig_np, ext_np)
Сравнить создание списка из трех элементов разными способами:
python -m timeit "[i for i in range(3)]" # list comprehension
vs
python -m timeit "tuple(i for i in range(3))" # create tuple from generator
vs
python -m timeit "tuple([i for i in range(3)])" # create tuple from list
vs
python -m timeit -s "import numpy as np" "[i for i in np.arange(3)]" # create list using numpy
vs
python -m timeit -s "import numpy as np" "np.array([i for i in np.arange(3)])" # create numpy array
Сравнить работу bool
и int
в if
:
python -m timeit -s "flag = True" "a = 123 if flag else 0"
vs
python -m timeit -s "flag = 0" "a = 123 if flag == 0 else 0"
Где-то в начале программы:
frame = tk.Frame(self) # master of that frame is self, because we want to show it on many tabs
self.tab_control = ttk.Notebook(self)
self.tab_control.bind('<<NotebookTabChanged>>', self.on_tab_changed)
Обработчик смены таба:
def on_tab_changed(self.event):
if event.widget is self.tab_control:
frame = self.tab_control.nametowidget(self.tab_control.select())
# Show frame on top of chosen frames
if frame is self.frame_container_1 or frame is self.frame_container_2:
self.ws.rlte.frame.grid(row=0, column=0, in_=frame)
self.ws.rlte.frame.lift()
Pygame полностью зависит от SDL (Simple DirectMedia Layer) и Python.
Установить SDL:
sudo apt install libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev libportmidi-dev
Установить pygame:
pip install pygame numpy==1.26.4
Проверить, что все работает:
python -m pygame.tests
python -m pygame.examples.aliens
Установить pyxel:
pip install pyxel
Устаревшая инструкция, как нестандартно устанавливать пакеты (из устаревшей инструкции установки gremer)
Устаревший пункт, не обязателен для Python 3.11+:
- поправить пути в файле
venv/lib/python3.10/site-packages/easy-install.pth
:/home/andyceo/Projects/gremer/3dparty/pylibs
поменять на/home/andyceo/Projects/gremer/3dparty
- аналогично для других установленных библиотек, чья схема папок в git-репозитории отличается от общепринятой
- эти правки останутся даже после установки/переустановки модуля; подробности см. Create editable package setup.py in the same root folder as init.py, Setting package_dir to ..?, Setup.py inside installed module