Основы Python

Основы Python

TW

Achieve

Все что я прошел:
Mimo
Metanit
Pythontutor
Couese 1 Python-джедай

Course 2 Python с нуля

Course 3 Open CV
Course 4 Tensorflow (-)
Book

Book


Part 1

Массивы в pattern matching

Словари в pattern matching

Классы в 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 и выполняет набор инструкций. После их выполнения файл автоматически закрывается.

Текстовые файлы

Файлы CSV


Бинарные файлы

Модуль shelve

Модуль 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))

Tkinter

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)

Текстовая метка Label

Текстовые метки в 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 принимает:

Entry(master, options)

Где master - ссылка на родительское окно, а options - набор следующих параметров:


Checkbutton

Radiobutton

Listbox

Меню



Report Page