Основы Python
TWAchieve
Все что я прошел:
Mimo
Metanit
Pythontutor
Couese 1 Python-джедай
Course 2 Python с нуля
Course 3 Open CV
Course 4 Tensorflow (-)
Book
Book
Классы в pattern matching (HARD)
guards или ограничения шаблонов
Установка псевдонимов и паттерн AS
As позволяет установить псевдоним для значения шаблона или для всего шаблона
match person:
case "Tom" | "Tomas" | "Tommy" as name:
Путь файла: somedir/somefile.txt.
конструкция with:
with open("hello.txt", "w") as somefile:
somefile.write("hello world")
Эта конструкция определяет для открытого файла переменную file_obj и выполняет набор инструкций. После их выполнения файл автоматически закрывается.
Модуль OS и работа с файловой системой
Date(year, month, day)
fx
import datetime
yesterday = datetime.date(1939,9,1)
print(yesterday)
/
Time
time([hour] [, min] [, sec] [, microsec])
fx
from datetime import time
current_time = time()
print(current_time) # 00:00:00
current_time = time(16, 25, 45)
print(current_time) # 16:25:45
/
Datetime
datetime(year, month, day [, hour] [, min] [, sec] [, microsec])
fx
deadline = datetime(2017, 5, 10, 4, 30)
print(deadline) # 2017-05-10 04:30:00
/
Преобразование из строки в дату
strptime(str, format)
%d: день месяца в виде числа
%m: порядковый номер месяца
%y: год в виде 2-х чисел
%Y: год в виде 4-х чисел
%H: час в 24-х часовом формате
%M: минута
%S: секунда
from datetime import datetime
deadline = datetime.strptime("22/05/2017", "%d/%m/%Y")
print(deadline) # 2017-05-22 00:00:00
Фоматирование дат и времени
%a: аббревиатура дня недели. Например, Wed - от слова Wednesday (по умолчанию используются английские наименования)
%A: день недели полностью, например, Wednesday
%b: аббревиатура названия месяца. Например, Oct (сокращение от October)
%B: название месяца полностью, например, October
%d: день месяца, дополненный нулем, например, 01
%m: номер месяца, дополненный нулем, например, 05
%y: год в виде 2-х чисел
%Y: год в виде 4-х чисел
%H: час в 24-х часовом формате, например, 13
%I: час в 12-ти часовом формате, например, 01
%M: минута
%S: секунда
%f: микросекунда
%p: указатель AM/PM
%c: дата и время, отформатированные под текущую локаль
%x: дата, отформатированная под текущую локаль
%X: время, форматированное под текущую локаль
from datetime import datetime
now = datetime.now()
print(now.strftime("%Y-%m-%d")) # 2017-05-03
print(now.strftime("%d/%m/%Y")) # 03/05/2017
print(now.strftime("%d/%m/%y")) # 03/05/17
print(now.strftime("%d %B %Y (%A)")) # 03 May 2017 (Wednesday)
print(now.strftime("%d/%m/%y %I:%M")) # 03/05/17 01:36
/
Сложение и вычитани дат и времени
timedelta([days] [, seconds] [, microseconds] [, milliseconds] [, minutes] [, hours] [, weeks])
from datetime import timedelta
three_hours = timedelta(hours=3)
print(three_hours) # 3:00:00
three_hours_thirty_minutes = timedelta(hours=3, minutes=30) # 3:30:00
from datetime import timedelta, datetime
now = datetime.now()
till_ten_hours_fifteen_minutes = now - timedelta(hours=10, minutes=15)
print(till_ten_hours_fifteen_minutes)
/
Сравнение дат
Также как и строки и числа, даты можно сравнивать с помощью стандартных операторов сравнения:
from datetime import datetime
now = datetime.now()
deadline = datetime(2017, 5, 22)
if now > deadline:
print("Срок сдачи проекта прошел")
elif now.day == deadline.day and now.month == deadline.month and now.year == deadline.year:
print("Срок сдачи проекта сегодня")
else:
period = deadline - now
print("Осталось {} дней".format(period.days))
Oкно
from tkinter import *
root = Tk() # создания графического окна
root.title("Python")
root.geometry("400x300") # размер окна
root.mainloop() # отображения окна
Kнопка
btn = Button(text="Hello")
btn.pack() # сделать элемент видимым
root.mainloop()
/
конструктор кнопки:
btn = Button(text="Hello", # текст кнопки
background="#555", # фоновый цвет кнопки
foreground="#ccc", # цвет текста
padx="20", # отступ от границ до содержимого по горизонтали
pady="8", # отступ от границ до содержимого по вертикали
font="16" # высота шрифта
)
/
activebackground: цвет кнопки, когда она находится в нажатом состоянии
activeforeground: цвет текста кнопки, когда она в нажатом состоянии
bd: толщина границы (по умолчанию 2)
bg/background: фоновый цвет кнопки
fg/foreground: цвет текста кнопки
font: шрифт текста, font=("Verdana", 13, "bold") - шрифт Verdana высотой 13px с выделением жирным
height: высота кнопки
highlightcolor: цвет кнопки, когда она в фокусе
image: изображение на кнопке
justify: устанавливает выравнивание текста. Значение LEFT выравнивает текст по левому краю, CENTER - по центру, RIGHT - по правому краю
padx: отступ от границ кнопки до ее текста справа и слева
pady: отступ от границ кнопки до ее текста сверху и снизу
relief: определяет тип границы, может принимать значения SUNKEN, RAISED, GROOVE, RIDGE
state: устанавливает состояние кнопки, может принимать значения DISABLED, ACTIVE, NORMAL (по умолчанию)
text: устанавливает текст кнопки
textvariable: устанавливает привязку к элементу StringVar
underline: указывает на номер символа в тексте кнопки, который подчеркивается.
width: ширина кнопки
wraplength: при положительном значении строки текста будут переносится для вмещения в пространство кнопки
/
Для обработки нажатия на кнопку необходимо установить в конструкторе параметр command, присвоив ему ссылку на функцию, которая будет срабатывать при нажатии:
clicks = 0
def click_button():
global clicks
clicks += 1
root.title("Clicks {}".format(clicks))
IntVar
BooleanVar
DoubleVar
Метод pack
expand: если True, то виджет заполняет все пространство
fill: определяет, будет ли виджет растягиваться, чтобы заполнить свободное пространство вокруг.
side: выравнивает виджет по одной из сторон контейнера.
btn1.pack(expand = True, fill=BOTH)
/
Метод place
height и width: устанавливают высоту и ширину
relheight и relwidth: задают высоту и ширину элемента, в качестве значения используется число float
x и y: устанавливают смещение элемента по горизонтали и вертикали
relx и rely: также задают смещение элемента по горизонтали и вертикали,
bordermode: задает формат границы элемента.
anchor: устанавливает опции растяжения элемента.
btn.place(relx=.5, rely=.5, anchor="c", height=30, width=130, bordermode=OUTSIDE)
/
Метод grid
column: номер столбца, отсчет начинается с нуля
row: номер строки, отсчет начинается с нуля
columnspan: сколько столбцов должен занимать элемент
rowspan: сколько строк должен занимать элемент
ipadx и ipady: отступы по горизонтали и вертикали соответственно от границ элемента до его текста
padx и pady: отступы по горизонтали и вертикали соответственно от границ ячейки грида до границ элемента
sticky: выравнивание элемента в ячейке, если ячейка больше элемента. Может принимать значения n, e, s, w, ne, nw, se, sw, которые указывают соответствующее направление выравнивания
for r in range(3):
for c in range(3):
btn = Button(text="{}-{}".format(r,c))
btn.grid(row=r, column=c, ipadx=10, ipady=6, padx=10, pady=10)
Текстовые метки в Python представлены элементом Label.
Label(master, options)
параметр options параметры
anchor: устанавливает позиционирование текста
bg/background: фоновый цвет
bitmap: ссылка на изображение, которое отображается на метке
bd: толщина границы метки
fg/foreground: цвет текста
font: шрифт текста, например, font="Arial 14" - шрифт Arial высотой 14px
height: высота элемента
cursor: курсор указателя мыши при наведении на метку
image: ссылка на изображение, которое отображается на метке
justify: устанавливает выравнивание текста. Значение LEFT выравнивает текст по левому краю, CENTER - по центру, RIGHT - по правому краю
padx: отступ от границ элемента до его текста справа и слева
pady: отступ от границ элемента до его текста сверху и снизу
relief: определяет тип границы, по умолчанию значение FLAT
text: устанавливает текст метки
textvariable: устанавливает привязку к элементу StringVar
underline: указывает на номер символа в тексте кнопки, который подчеркивается. По умолчанию значение -1, то есть никакой символ не подчеркивается
width: ширина элемента
wraplength: при положительном значении строки текста будут переносится для вмещения в пространство элемента
Entry принимает:
Entry(master, options)
Где master - ссылка на родительское окно, а options - набор следующих параметров: