
Denis
13.12.2016
19:15:48

Johnnie
13.12.2016
19:16:26
а если у меня фласк апп с блюпринтами, тесты на каждый блюпринт надо отдельно писать тоже?

тнн Itjunky
13.12.2016
19:16:31
Хз, скорее компилится, чем нет. Это ж виртуальная машина, а не интерпретатор

Denis
13.12.2016
19:16:56
Питон тоже байт-код интерпретирует

Google

тнн Itjunky
13.12.2016
19:17:25
Поскольку это чатик для нубов. Не кидайте камнями, расскажите, что за блюпринты. Уже пару раз слышал про них, но пока не вникал.

Zart
13.12.2016
19:17:36

тнн Itjunky
13.12.2016
19:17:49

Milton
13.12.2016
19:18:02

Zart
13.12.2016
19:18:02
блюпринсты - это такой фласкизм для расчлененки 8)

Cykooz
13.12.2016
19:18:04

тнн Itjunky
13.12.2016
19:18:31
К джанге не применим?

Zart
13.12.2016
19:18:33
но на выходе бинарь
берется специальная заглушка, которая умеет грузить питон.длл и читать саму себя как зип. всё.

тнн Itjunky
13.12.2016
19:18:58

Zart
13.12.2016
19:18:59
а далее магия зипимпорта

тнн Itjunky
13.12.2016
19:19:26
Прикол =)

Zart
13.12.2016
19:19:27
переименуй тот ехе в зип и открывай хоть виндой

Google

Zart
13.12.2016
19:19:43
"компилятор", блин

тнн Itjunky
13.12.2016
19:19:59
Ну да, в таком случае это не компилятор =))))

Johnnie
13.12.2016
19:20:11

тнн Itjunky
13.12.2016
19:20:29
А чем от декораторов отличается?

Johnnie
13.12.2016
19:20:41
эм. всем)

Zart
13.12.2016
19:20:47
эм
чо?

тнн Itjunky
13.12.2016
19:21:31

Johnnie
13.12.2016
19:21:31
blueprint = Blueprint('mod_auth', __name__, url_prefix='/auth')

Zart
13.12.2016
19:21:51
декораторы ничего не отделяют, не надо курить эту траву

Denis
13.12.2016
19:22:15
Чем они отличаются от апп в джанге?

Johnnie
13.12.2016
19:22:18
@blueprint.route('/login/', methods=['GET', 'POST'])
def login():
pass
@blueprint.route('/register/', methods=['GET', 'POST'])
def register()
pass
у меня это как-то так выглядит

тнн Itjunky
13.12.2016
19:22:36
Ну в мире веб-фрэймворков, декораторы определяют локейшны и, по сути, выполняемые сценарии приложения

Zart
13.12.2016
19:22:49

тнн Itjunky
13.12.2016
19:22:57
При этом они похоже в каком-то ивент-лупе опрашиваются

Johnnie
13.12.2016
19:23:03
нене

тнн Itjunky
13.12.2016
19:23:14
Опишите тогда вы

Johnnie
13.12.2016
19:23:16
декоратор это по сути обертка на функцией

Google

Johnnie
13.12.2016
19:23:33
оно может выполнить что-то до вызова функции, что-то после, а может вообще не выполнить ее

тнн Itjunky
13.12.2016
19:23:33
Я для себя именно так их определил, когда начал работать с фласком и ботлом

Zart
13.12.2016
19:23:53

Denis
13.12.2016
19:24:08
Декоратор это функция, которая вызывается от другой функции. Все.
Ну или от класса

Zart
13.12.2016
19:24:22
фласки/ботлы юзают декораторы для красоты синтаксиса

тнн Itjunky
13.12.2016
19:24:34
Ну вот обычная функция может быть вызвана, а может и нет. В декоратор мы попадаем при определённом условии, типа if или case

Zart
13.12.2016
19:24:37
это просто деталь реализации

тнн Itjunky
13.12.2016
19:25:07
да, я попутал ивент луп с кейсом, ссори

Zart
13.12.2016
19:25:28
def foo(...):
...
foo = decorator(foo)
для того чтобы сделать такой код красивее придумали синтаксис
@decorator
def foo(...):
....

Johnnie
13.12.2016
19:25:47
он наверное корявый и его обосрут

Johnnie
13.12.2016
19:25:55
но он работает)

Zart
13.12.2016
19:26:01
я еще смутно помню что в ранние лохматые 2.3-2.4 годы порой попадался код вида
[decorator]
def foo(...):
...

Johnnie
13.12.2016
19:26:48
и потом его вызывал вот так:
@append_to_log
@check_auth('superuser')
def cmd_add_user(self, bot, update, **args):

Denis
13.12.2016
19:26:57

Zart
13.12.2016
19:27:27
https://wiki.python.org/moin/PythonDecorators#B._list-before-def_syntax
"Implementation already exists"

тнн Itjunky
13.12.2016
19:27:56

Google

Johnnie
13.12.2016
19:28:08
вызываются в порядке как указаны
последовательно

Zart
13.12.2016
19:28:18
но это очень древние времена...

тнн Itjunky
13.12.2016
19:28:31

Johnnie
13.12.2016
19:28:37
ват?

Zart
13.12.2016
19:28:52

тнн Itjunky
13.12.2016
19:29:20
Один декоратор может обрамлять только одну функцию?

Johnnie
13.12.2016
19:29:29
нет

Zart
13.12.2016
19:29:39

Johnnie
13.12.2016
19:29:39

Admin
ERROR: S client not available

тнн Itjunky
13.12.2016
19:29:51
ТОгда как определить при обращении, какая из функцию дложна отработать?

Zart
13.12.2016
19:30:06
т.е. мы кормим функцию декоратору, а результат присваиваем имени функции, подменяя её

Johnnie
13.12.2016
19:30:18
ааа, ты про это)

Zart
13.12.2016
19:30:21
имя то же самое, содержимое *может* отличаться

тнн Itjunky
13.12.2016
19:30:39
чот мозг начинает ломаться

Zart
13.12.2016
19:30:45
некоторые декораторы возвращают переданную функцию как есть

Johnnie
13.12.2016
19:31:17
а чо с тестами блюпринтов-то в итоге? :)
все в одну кучу?

Zart
13.12.2016
19:31:27

Google

тнн Itjunky
13.12.2016
19:32:29
Аааа, я понял, во фласках объявление декоратора запрятано в кишочки, а мы юзаем только вторую часть
Соответсвенно, при объявлении всегда что-то отрабатывает, а потом управление переходит ко второй части, и тут вопрос
Они обе(f1,f2) выполнятся всегда или как?

Johnnie
13.12.2016
19:33:14
не при объявлении, а при вызове

Zart
13.12.2016
19:33:34
сам декоратор выполняется в момент объявления декорируемой
но в зависимости от того вернет ли он свою обёртку или что - могут быть разные варианты

Johnnie
13.12.2016
19:33:58
с этого момента поподробнее

Zart
13.12.2016
19:34:47
вот в моем предыдущем примере например - функция decorator будет вызвана дважды, когда код дойдет до объявления f1 и f2
но при запусках f1 и f2 он уже вызываться не будет

тнн Itjunky
13.12.2016
19:35:26
Опять мозг сыпетя
А было сказано, что можно и после функции выполнять декоратор, как тогда код будет выглядеть?

Johnnie
13.12.2016
19:36:57
ape364@pbnb ~> python decorators.py
before
before
ape364@pbnb ~> cat decorators.py
def decorator(f):
print('before')
return f
print('after')
@decorator
def f1():
return 1
@decorator
def f2():
return 2⏎ ape364@pbnb ~>
this is magic...

Zart
13.12.2016
19:37:17
def decorator(f):
def wrapper():
return f()
return wrapper

тнн Itjunky
13.12.2016
19:37:31
print('after')
вообще никогда не выполнится

Zart
13.12.2016
19:37:43
да

тнн Itjunky
13.12.2016
19:38:38

Zart
13.12.2016
19:38:48
?

тнн Itjunky
13.12.2016
19:39:10
К чему это и что иллюстрирует?

b0g3r
13.12.2016
19:39:20
это декоратор
знакомьтесь

тнн Itjunky
13.12.2016
19:39:49
Ааа, я понял, функция внутри вызывается при объявлении декоратора
Эта группа больше не существует