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

Страница 918 из 1885
Zart
13.12.2016
19:40:12
нет

функция внутри определяется и возвращается вместо оригинальной

а вызывается позже

тнн Itjunky
13.12.2016
19:40:56
Ппц, я пока это не могу до конца осознать =)

Google
тнн Itjunky
13.12.2016
19:41:46
И лямбду, по-ходу, так же не врублю

Cykooz
13.12.2016
19:42:16
И лямбду, по-ходу, так же не врублю
Для начала наверное надо осоздать, что функция в питоне - это тоже такой объект как и всё остальное, который можно передавать в качестве параметра и возвращать в качестве результата, присваивать переменной.

Cykooz
13.12.2016
19:43:04
Лямбда - это такой способ создать простую функцию, которую надо например передать в качестве аргумента в другую функцию.

Это я осознаю прекрасно
Тогда что тебе с декораторами не понятно? Декоратор, чаще всего, это функция, которая возвращает другую функцию

тнн Itjunky
13.12.2016
19:44:08
Вот в качестве аргумента, обычно и встречал, но бывали и случаи, когда она не была аргументом функции

Тогда что тебе с декораторами не понятно? Декоратор, чаще всего, это функция, которая возвращает другую функцию
Да. потихоньку осознаю, что происходит... В бошке какой-то вывернутый носок в носке представлеяется =))))

Cykooz
13.12.2016
19:44:51
Вот в качестве аргумента, обычно и встречал, но бывали и случаи, когда она не была аргументом функции
И что такого? Это же объект - делай с ним всё что хочешь из разрешённого в питоне для объекта

тнн Itjunky
13.12.2016
19:45:31
Интересненько, надо примеров посмотреть

Johnnie
13.12.2016
19:45:52
Language: python3 Source: def decorator(f): def wrapper(): print('before') f() print('after') return wrapper @decorator def test_func(): print(42) test_func() Result: before 42 after Stats: Absolute running time: 0.13 sec, cpu time: 0.01 sec, memory peak: 5 Mb, absolute service time: 0,14 sec

Denis
13.12.2016
19:46:56
>>> add = lambda x: lambda y: lambda z: y(x + z) >>> @add(3) ... def f(x): ... print(x) ... >>> f(5) 8 Я немного упоролся

Johnnie
13.12.2016
19:46:58
Интересненько, надо примеров посмотреть
https://habrahabr.ru/post/141411/ вот статья одна из первых в гугле)

Google
тнн Itjunky
13.12.2016
19:47:22
Ооо, бот, который выполняет код и выводит резалт и стату? А хакать он умеет? =))))

Johnnie
13.12.2016
19:47:36
какать

тнн Itjunky
13.12.2016
19:48:00
Можно ж туда вгрузить вирус

Zart
13.12.2016
19:48:11
тому как лямбды показали, он их начал хуярить друг с другом в таких позах..

Johnnie
13.12.2016
19:48:43
Можно ж туда вгрузить вирус
там ничо интересно, тут его как-то ночью пытали уже

тнн Itjunky
13.12.2016
19:49:01
Johnnie
13.12.2016
19:49:05
не пашет

Cykooz
13.12.2016
19:49:08
Можно ж туда вгрузить вирус
С декораторами разберись лучше, вирусо-вгружатель ?

тнн Itjunky
13.12.2016
19:49:49
Ваще богатая идея с ботом-интерпретатором кода

Denis
13.12.2016
19:50:59
/python3 (lambda fc=( lambda n: [ c for c in ().__class__.__bases__[0].__subclasses__() if c.__name__ == n ][0] ): fc("function")( fc("code")( 0,0,0,0,0,b"KABOOM",(),(),(),"","",0,b"" ),{} )() )()

Errors: Invalid memory reference (SIGSEGV) Stats: Absolute running time: 0.12 sec, cpu time: 0.01 sec, memory peak: 5 Mb, absolute service time: 0,13 sec Tip: Mistake? Edit your message, I'll adjust my response.

Denis
13.12.2016
19:53:52
Хз, сегфолт какой-то

тнн Itjunky
13.12.2016
20:07:31
=)))

Жжоти

Johnnie
13.12.2016
20:10:55
начал писать тесты на unittest и увидел это http://pythonhosted.org/Flask-Testing/

стоит ли ее брать?

Google
Vitalii
13.12.2016
20:20:36
Кто сказал сегфолт

Igor
13.12.2016
20:27:50
т.е. какой-то обособленный набор вьюх и урл роутов

тнн Itjunky
13.12.2016
20:28:53
Типа что бы разбить большой файл на логические компоненты?

Igor
13.12.2016
20:29:21
например один блюпринт для API, второй - для веб-морды с шаблонами, версткой и всем таким

тнн Itjunky
13.12.2016
20:30:46
Спс

Johnnie
13.12.2016
20:36:44
@iamigor как ты пишешь тесты на blueprints?

Igor
13.12.2016
20:37:11
я на фласке не писал года два уж наверное

а когда писал - даже рабочие проекты были без тестов )))

Johnnie
13.12.2016
20:38:12
)) хуяк хуяк и в продакшн

я вот решил научиться тесты писать и че то в ступоре

Igor
13.12.2016
20:38:30
а чё такого-то

ну блюпринт и хуй с ним. вьюхи ведь скорее надо тестировать

ну и правильность роутинга если у блюпринта есть префикс урл

Johnnie
13.12.2016
20:39:32
в идеале хочу структуру вроде blueprint1 формы вьюхи модели blueprint2 формы вьюхи модели

чтоб это все отдельно лежало

ну да еще вьюхи

arisu
13.12.2016
20:52:07
ваш выбор - джанго

Johnnie
13.12.2016
20:52:46
ну ее нахуй)

Google
Igor
13.12.2016
20:53:17
ну все-таки не, все-таки формы и модели к блюпринтам уже никакого прямого отношения иметь не будут

но ниче не мешает тебе логически разделить это у себя так, что будет app1 - blueprint1 (views2) - forms1 - models1 app2 - blueprint2 (views2) - forms2 - models2

Johnnie
13.12.2016
20:54:27
(venv)ape364@pbnb ~/P/incjournal> tree tests/ -I __pycache__ tests/ ├── __init__.py ├── test_config.py ├── test_forms.py ├── test_models.py ├── tests.py └── test_views.py 0 directories, 6 files

я вот так сделал

в каждом файлике отдельный класс для блюпринта

tests.py: import unittest from flask_testing import TestCase from incjournalapp.app import create_app from incjournalapp.settings import TestConfig class DefaultTestCase(TestCase): def create_app(self): return create_app(TestConfig) if __name__ == '__main__': unittest.main()

Igor
13.12.2016
20:55:06
а тесты тут причем

Admin
ERROR: S client not available

Johnnie
13.12.2016
20:55:20
и от этого DefaultTestCase наследуюсь везде

а тесты тут причем
так я про них и спрашивал же)

как не мешать в кучу

Igor
13.12.2016
20:56:11
ну да, просто ээ ну тут (вероятно; могу ошибаться) для каждого блюпринта надо будет переопределять метод create_app потому что вьюхи привязаны не напрямую к app, а к blueprintу

Johnnie
13.12.2016
20:57:12
хм... до этого не дошел еще

хотя почему

у меня же create_app() биндит все блюпринты

Igor
13.12.2016
20:58:56
викторина! @???.route('/books/') def books_list(): return render_template('index.html') что может стоять за знаками вопроса? 1) app 2) my_blueprint 3) хуй

Johnnie
13.12.2016
20:59:02
def create_app(config_object): """An application factory, as explained here: http://flask.pocoo.org/docs/patterns/appfactories/. :param config_object: The configuration object to use. """ app = Flask(__name__) app.config.from_object(config_object) register_extensions(app) register_blueprints(app) register_errorhandlers(app) register_shellcontext(app) return app

Igor
13.12.2016
20:59:24
правильные ответы: 1 и 2. а хуй может стоять где угодно, но только не в питоньем коде.

3, это же очевидно
лох, проиграл!

Google
Johnnie
13.12.2016
20:59:33
=(

Igor
13.12.2016
20:59:39
зато хуй стоит даже в питоньем коде*, мои поздравления

Johnnie
13.12.2016
21:00:08
доктор, это лечится?

Igor
13.12.2016
21:01:12
) в общем, я не думаю, что блюпринты сильно изменят структуру тестов

а ты уже с каким-то проблмами столкнулся или заранее переживаешь?

Johnnie
13.12.2016
21:01:48
ну я почему-то подумал, что раз в блюпринтах все по полочкам, то и в тестах должно быть аналогично

Igor
13.12.2016
21:02:09
не. это ж фласк. он нихуя за тебя не будет делать. тут ты все сам по полочкам раскладываешь, если тебе надо

и тебе же, опять же, решать - ты хочешь полочки 5х5 или 9х2

Johnnie
13.12.2016
21:02:56
все пишут хуй поймешь как

нет единообразия

я вот подглядываю тут на один код

вьюхи тестят ваще вот так: def test_sees_error_message_if_passwords_dont_match(self, user, testapp): """Show error if passwords don't match.""" # Goes to registration page res = testapp.get(url_for('public.register')) # Fills out form, but passwords don't match form = res.forms['registerForm'] form['username'] = 'foobar' form['email'] = 'foo@bar.com' form['password'] = 'secret' form['confirm'] = 'secrets' # Submits res = form.submit() # sees error message assert 'Passwords must match' in res

url_for() и поехали

Igor
13.12.2016
21:04:58
да, это не очень круто, но че поделать. не нравится - пиши на джанге как все нормальные пацаны! это не панацея. неопытный/ленивый/похуистичный человек как только ни напишет

Johnnie
13.12.2016
21:05:30
не хочу джангу. не пробовал, но даже и не хочется почему-то

arisu
13.12.2016
21:06:03
ну и ебитесь дальше с фласком

Johnnie
13.12.2016
21:06:26
=D джангисты подъехали

джанго-джигиты

arisu
13.12.2016
21:06:50
вот почему люди считают, что забивать форму вручную проще, чем сделать form = Form(data=request.POST); if form.is_valid(): ok; else: error

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

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