Skip to content

Instantly share code, notes, and snippets.

View pelid's full-sized avatar

Evgeny Evseev pelid

View GitHub Profile
@pelid
pelid / module-card.scss
Created March 11, 2019 18:32
Пример верстки
.module-card {
position: relative;
width: calc(50% - 15px);
padding-top: 36px;
padding-right: 36px;
padding-left: 36px;
padding-bottom: 36px;
background: #fff;
border-radius: 8px;
margin-bottom: 30px;
@pelid
pelid / README.md
Last active February 21, 2019 16:15
Объекты и атрибуты

Объекты и атрибуты

Часто можно услышать, что в Python всё является объектом, и это правда. Но что такое объект? И из чего складывается это "всё"?

Когда переменных в коде становится много, их объединяют в группы — объекты. Добраться до переменной, прикрепленной к объекту можно через точку .. Выглядит это похоже на вызов метода. Для сравнения, вызовем метод __len__ и вычислим длину строки:

print('строка это тоже объект'.__len__())  # выведет 22
@pelid
pelid / Tuple и распаковка в Python.md
Last active February 20, 2019 15:21
Tuple и распаковка в Python

Упаковка данных в Python — кортеж tuple

Представьте себя функцией. Да, это не просто, и все же...

Вас зовут get_contacts и вы умеете находить контакты человека по email-адресу: его адрес, имя и номер телефона. Вы не прочь поделиться информацией с другими, но Python вам это запрещает. Нельзя возвращать так много данных разом, результат у функции может быть только один. Вы можете выбрать что-то одно, самое важное: адрес, имя, или телефон человека. Или можете проявить изобретательность и упаковать все свои данные в одну переменную.

Как упаковать

Для функции get_contacts(email) доступны несколько способов упаковки данных в более сложную структуру: словарь dict(), кортеж tuple() и еще несколько других. Рассмотрим подробнее последний вариант — tuple.

@pelid
pelid / README.md
Last active February 19, 2019 19:59
Методы в Python

Метод — это как функция, только удобнее

Зачем нужны методы, когда есть функции? В библиотеке Python полно удобных функций, а если их не хватает, то можно установить пакет с PYPI и взять её оттуда. Зачем вводить новую сущность?

У вас есть программа с чат-ботом для Telegram, в ней 200 строк кода. В программе используется функция len(), она вычисляет длину строк. Кроме len в коде встречаются еще три похожие функции, они делаются то же самое, но работают с другими типами данных: списками, словарями и кортежами. В названиях начинается путаница и вместо короткого len вы пишете длинное get_str_len, get_dict_len и подобные.

На функции len мучения не заканчиваются. Осталось разобраться с тремя версиями add() и с десятком str(). Добро пожаловать в мир без методов.

Метод vs Функция

@pelid
pelid / print_receipt_template.py
Last active December 4, 2018 11:16
Template for print_receipt.py
def create_formatted_receipt(products):
"""Функция создает новый чек, принимает на вход любой список покупок - `products`.
Функция сама не вызывает `print`, только готовит строки к последующему
выводу на экран или печати."""
receipt_lines = []
# поместите сюда основной цикл, наполните receipt_lines строками.
# используйте метод списка append - receipt_lines.append(line)
import requests
req = requests.Request('POST', 'http://stackoverflow.com' , headers={'X-Custom': 'Test'}, data={
'a': 1,
'b': 2,
})
# TODO допилить напильником
# GET /wiki/HTTP HTTP/1.0
# Host: ru.wikipedia.org
class Merchandise():
"""Бывший ProductInCatalog, переименовал во избежание дальнейшей путаницы"""
"""Редактируется менеджерами Bosch в отдельной таблице"""
product = models.ForeignKey(Product)
catalog = models.ForeignKey(Catalog) # slug каталога для привязки конфигурации каталога, зашитой в код
is_new = models.BooleanField(u'new!')
is_hit = models.BooleanField(u'hit!')
available = models.BooleanField(u'в продажу')
<!DOCTYPE html>
<html>
<head>
<title>Video Demo</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-sm-9">
@pelid
pelid / services.txt
Created May 31, 2018 11:55
Список непроцессируемых услуг ММ 31 мая
52056 Автомобиль "уводит" в одну сторону 60 1
52016 Автомобиль не переводится из положения парковки в положение движения 60 1
432234 Балансировка 60 1
63635 Бесплатная консультация механика 0 1
52259 Ветровое стекло запотевает 15 2
77311 Выезд механика 60 0.475
432235 Демонтаж и монтаж шины 60 1
110989 Диагностика газобаллонного оборудования 60 1
432244 Доставка шин с хранения 0 1
52206 Дым от двигателя или из выхлопной системы 60 1
@pelid
pelid / 01_cities.py
Last active November 29, 2017 10:54
Debug prints & data types. Use print, type, dir commands
cities = ['Moscow', 'Paris', 'Berlin', 'Madrid', 'Oslo']
for i in cities:
print(i)
# Упражение на навык отладки кода с помощью print(), type() и dir():
# - какой тип данных хранится в cities ?
# - какой тип данных хранится в i ?
# - откуда берутся значения i?
# - какие методы и атрибуты есть у переменной i ?
# - какие методы и атрибуты есть у переменной cities ?