
Denis
19.01.2018
14:04:55
Ну вот Антон найдется. Про концепцию сахара и соли я заодно почитал википедию пока.

Anton
19.01.2018
14:06:33
и ещё совет: читайте код. много кода. популярные библиотеки, фреймворки и тп. разберитесь как устроен фласк или клик, реквестс. популярные библиотеки популярны именно потому, что хорошо написаны (не всегда, конечно)

Google

Denis
20.01.2018
01:52:24
А есть кто живой?

Evil
20.01.2018
02:49:34
есть

Denis
20.01.2018
03:47:32
привет :) простая программка
import json
def jsonize(val):
print (val)
#data = json.loads(val)
#print (data)
@jsonize
def article():
print ("Hellow Molly!", "Lets talk today about Molly....")
дак вот принт вал выдает
python3 json.py
<function article at 0x105b7c9d8>
<function article at 0x105b7c9d8>
и я чета не могу конвертнуть это в джейсон и так и сяк пробовал ошибки
пробовал json.dumps в прошлой программе работало
видимо все из-за того что я поймал в джейсонайз не текст а обьекты

Evil
20.01.2018
04:11:22
1. dumps серилизует в строку
2. посмотри как работают декораторы
вообще муть какую ты написал иди книжки читай, даже объяснять не охота
def jsonify(func):
print(json.dumps(func()))
@jsonify
def article():
return {"title": "Python for dummies"}

Google

Denis
20.01.2018
04:30:13
я прям дико извняюсь но вот....
Traceback (most recent call last):
File "json.py", line 1, in <module>
import json
File "/Users/master/Desktop/json.py", line 6, in <module>
@jsonify
File "/Users/master/Desktop/json.py", line 4, in jsonify
print(json.dumps(func()))
AttributeError: module 'json' has no attribute 'dumps'
типа атрибута такого нет хотя он ступудняк есть и работает

Ruslan
20.01.2018
06:15:42
Покажи строку импорта json'a

Denis
20.01.2018
06:18:09
Покажу все Руслан
import json
def jsonify(func):
print(json.dumps(func()))
@jsonify
def article():
print ("Hellow Molly! This is me Louse.. ")

Ruslan
20.01.2018
06:18:28
А файл как называется?

Denis
20.01.2018
06:18:29
мне просто демонстрацию декоратора с джейсоном надо сделать
json.py

Ruslan
20.01.2018
06:18:49
переименуй

Denis
20.01.2018
06:20:00
оки
теперь сказал
decor_demo.py:3: syntax error, unexpected ':'
decor_demo.py:7: syntax error, unexpected ':'
decor_demo.py:8: syntax error, unexpected end-of-input, expecting keyword_end

Ruslan
20.01.2018
06:22:45
decor_demo это новое название? или другой файл?

Denis
20.01.2018
06:23:00
сильно ему название функции не нравится верхней
новое название
вроде ничего предосудительного

Ruslan
20.01.2018
06:24:38
Не нравится ему твой текст

Denis
20.01.2018
06:24:41
и ведь какая банальщина
на руби за минуту бы сделал

Google

Denis
20.01.2018
06:25:34
текст то какой не нравится? Хело Долли? :)))))

Ruslan
20.01.2018
06:25:46
А
Вот оно что: твоя обернутая функция, ничего не возвращает, соответственно json пытается сделать дамп None

Denis
20.01.2018
06:30:16
но это странно потому что если принтануть print(json.dumps(func())) без джейсона мы увидим два обьекта но не текст
как из обьектов выдавить сок текса я не знаю

Ruslan
20.01.2018
06:35:09
Потому что возможно ты принтишь объекты ошибок
Возвращай результат из функции, на руби тоже нужно так делать

rem
20.01.2018
07:28:46
import grequests
with open("C:\\path\\urls.txt") as werewolves:
array = [row.strip() for row in werewolves]
params = {'a':'b', 'c':'d'}
rs = [grequests.post(u, data=params) for u in array]
for r in grequests.imap(rs, size=16)
print(r.status_code, r.url)
Все довольно просто, импортируется библиотека, открывается файл на чтение, создается список, переменной params присваивается значения a:b, c:d.
для чего params там я не понял, я прост с деревни
может кто подсказать?ъ

Denis
20.01.2018
10:00:45
Дак это все немного нето
import json
def conv(func):
print(func())
@conv
def article():
print ("Hellow Molly! This is me Louse.. ")

Denis
20.01.2018
10:01:57
во первых он запросил лишнюю строку между импортом и кодом
а во вторых выводится сейчас ошибка по 4 и 8 строке это def
decor_demo.py:4: syntax error, unexpected ':'
decor_demo.py:8: syntax error, unexpected ':'
decor_demo.py:9: syntax error, unexpected end-of-input, expecting keyword_end
и я лично никак понять не могу как простая декларация функции привела к такой буре
-------------------------------------------------
Слушайте Гуры у меня вопрос в тесте все мозги вынес
@login_required
def send_feedback(request)
Какой записи эквивалентно применение декоратора?

Google

Admin
ERROR: S client not available

Denis
20.01.2018
10:05:21
send_feedback = login_required(send_feedback)
login_required = send_feedback(login_required)
def login_required(send_feedback)(request)
def login_required(send_feedback)
4 варианта

BlackAndOrange
20.01.2018
10:06:00
Первой, очевидно

Denis
20.01.2018
10:06:25
по идее же запускается login_required и ему передается send_ бла бла
Руслан поучаствуй плиз для статистики
А че оказалось я все закоментил оставил 1 строку и оказалось что json у меня типа и нет
хотя в предыдущем скрипте он работает
как так может быть?
не знаю как он работал и куда он делся.. но даже попытка поискать пипом джейсон вызывает 2 страницы красного текста


Ruslan
20.01.2018
12:36:59
Сейчас ничего не пиши, но внимательно читай
def simple_decorator(func):
print(func)Вот это у тебя не декоратор. Вернее это может использоваться как декоратор, но он сразу же вызывается. Твой скрипт вообще не должен ничего печатать.
Вот это правильно:
def simple_decorator(func):
def wrapper():
print(func())
return wrapperДекорирующая функция возвращает декорируемую функцию интерпретатору
Далее ты можешь использовать декорируемую функцию в любом учатске кода:
article()Что приведет к вызову того самого wrapper
По сути код
@simple_decorator
def article():
print("String `Hellow Molly! This is me Louse..` is not JSON")Говорит интерпретатору "эй, чувак, при вызове этой функции пропусти ее через simple_decorator"
Да, кстати обрати внимание, print работает только со stdout, он не передаст никак текст Hellow Molly! This is me Louse.. тебе в json декодер
поэтому ты должен ВЕРНУТЬ строку, причем строка должна быть в формате json:
@simple_decorator
def article():
return "{'is_json': 'Hellow Molly! This is me Louse..'}"
Так же тебе необходимо объект (а это будет словарь, когда json конвертирует строку) вернуть из wrapper:
def to_dict(func):
def wrapper():
_func_result = func()
return json.loads(_func_result)
return wrapper
Вот этот код не должен ничего напечатать тебе в консоль:
import json
def to_dict(func):
def wrapper():
_func_result = func()
return json.loads(_func_result)
return wrapper
@to_dict
def article():
return '{"is_json": "Hellow Molly! This is me Louse.."}'
Потому что результат вычислений нужно вызывать явно где-нибудь в своем коде, например:
import json
def to_dict(func):
def wrapper():
_func_result = func()
return json.loads(_func_result)
return wrapper
@to_dict
def article():
return '{"is_json": "Hellow Molly! This is me Louse.."}'
_data = article()
print(_data)

Google

Ruslan
20.01.2018
12:50:47
На этом все. Но на заметку: попробуй с сообщества @ru_python_beginners

Denis
20.01.2018
14:08:29
проблема в том что модуля этого нет и он не ставится
2 страницы красного текста ошибок и хрен вам
это даже поиск выдает
ну поставил линух попробую там попробовать, пардон за тафтологию

Ruslan
20.01.2018
16:17:05
А название поменял файла?

V
21.01.2018
12:22:40
подскажите плз, у меня в переменной значение при выводе через print выводится как b'МОЕЗНАЧЕНИЕ' как с этим работать, что погуглить? мне нужно по сути это значение без лишних кавычек и b. Насколько я понял это байтовая переменная..