@python_beginnersЭта группа больше не существует

Страница 917 из 1885
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
py2exe не компилятор ни разу
но на выходе бинарь

Milton
13.12.2016
19:18:02
py2exe не компилятор ни разу
Запаковщик скорее

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

тнн 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
Поскольку это чатик для нубов. Не кидайте камнями, расскажите, что за блюпринты. Уже пару раз слышал про них, но пока не вникал.
я бы объяснил, но я сам нуб. пока у меня это просто разделение. типа блюпринт auth - логин и регистрация

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

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

Zart
13.12.2016
19:20:47
эм

чо?

Какой-то самодельный термин из мира Flask
это такой недоделанный инклуд пирамиды, ага

тнн Itjunky
13.12.2016
19:21:31
я бы объяснил, но я сам нуб. пока у меня это просто разделение. типа блюпринт auth - логин и регистрация
по этому объяснению я нашёл схожесть с декораторами, они то же отделяют и указывают на конкретную функцию

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
Ну в мире веб-фрэймворков, декораторы определяют локейшны и, по сути, выполняемые сценарии приложения

тнн 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
да, я попутал ивент луп с кейсом, ссори
https://paste.fedoraproject.org/505909/65713614/ вот такой я для бота писал

он наверное корявый и его обосрут

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):

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
и потом его вызывал вот так: @append_to_log @check_auth('superuser') def cmd_add_user(self, bot, update, **args):
Во, ещё не всё понятно про несколько декораторов рядом и про момент их завершения

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
и потом его вызывал вот так: @append_to_log @check_auth('superuser') def cmd_add_user(self, bot, update, **args):
т.е. это аналогично def cmd_add_user(...): ... cmd_add_user = check_auth('superuser')(cmd_add_user) cmd_add_user = append_to_log(cmd_add_user)

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
Один декоратор может обрамлять только одну функцию?
def decorator(f): "я декоратор" return f @decorator def f1(): return 1 @decorator def f2(): return 2

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
Ааа, я понял, функция внутри вызывается при объявлении декоратора

Страница 917 из 1885

Эта группа больше не существует Эта группа больше не существует