@ru_python

Страница 9381 из 9768
Tishka17
19.06.2019
20:34:12
а как я могу вызвать функцию wrapper, кроме способа decorator()()?
Ну или прям внутри декоратора вызвать

Aragaer
19.06.2019
20:34:14
оно же просто повторно вызывает decorator? нет?
нет, оно вызывает первый раз decorator, а второй раз его результат

Tishka17
19.06.2019
20:34:22
Jaroslaw
19.06.2019
20:34:34
понять как работают декораторы

Google
Aragaer
19.06.2019
20:34:46
декораторы обычно принимают аргумент

твой декоратор не принимает аргумента

Серый
19.06.2019
20:34:53
нет, seek может выставить позицию в файле, но для этого надо знать длины строк
Длина строк неизвестна заранее, к сожалению. Есть файлик jsonl на гигабайт, и я пытаюсь сделать метод для его чтения по offset

Jaroslaw
19.06.2019
20:35:07
ну вот какой он сейчас def decorator(func): def wrapper(): print("Code before performance") func() print("Code after performance") return wrapper def show(): print("I am simple Function") # decorator()() x = decorator(show) x()

Aragaer
19.06.2019
20:35:07
если offset это позиция в байтах, то seek

у тебя есть функция show, а x это она же, завернутая в декоратор

Tishka17
19.06.2019
20:35:48
Давай я попробую: 1. Когда ты пишешь @dec def x():... Это примерно то же самое что def f():... x=dec(f)

2. Когда ты в декораторе возвращаешь функцию она используется вместо оригинальной

3. Когда у тебя декоратор имеет вид def dec(f): ... return otherfunc @dec def x():... Как мы видели выше это эквивалентно x=otherfunc Поэтому когда ты вызываешь x() на самом деле просто вызывается otherfunc()

4. Так как обычно эту otherfunc создают внутри декоратора, она имеет доступ ко всему что в нем есть. В частности к оригинальной функции, так как она передается аргументом в декоратор



Видишь, х перестал быть функцией. В него записалось то, что вернцл декоратор

Google
Tishka17
19.06.2019
20:35:49
Соответственно, чтобы х был функцией, декоратор должен вернуть функцию

Он может вернуть ту же самую функцию. Но тогда они и работать будет как раньше

Чтобы при вызове х делалось что-то другое, декоратор должен вернуть другую функцию

Ну и наконец чтобы эта функция была не одна и та же постоянно, а как-то учитывала то, что мы передали, то мы создаём ее прям внутри при каждом вызове декоратора

Aragaer
19.06.2019
20:35:49
но ты можешь сделать @decorator def show(): ...

Серый
19.06.2019
20:35:54
если offset это позиция в байтах, то seek
Нет, по линиям offset, если бы мог отдавать по позиции в байтах можно было бы и так отдать, да)

Aragaer
19.06.2019
20:35:58
тогда будет по-другому

Aragaer
19.06.2019
20:36:48
если через @, то внутрь декоратора попадет show как написано, а потом результат декоратора (завернутая функция) будет присвоена в show (то есть функция будет заменена на завернутую)

Tishka17
19.06.2019
20:36:49
Блин. В отрыве от контекста не очень. Надо будет переписать

Aragaer
19.06.2019
20:38:02
Нет, по линиям offset, если бы мог отдавать по позиции в байтах можно было бы и так отдать, да)
ну вот в итоге надо взять файл и бежать по символам переноса строк. Я не знаю, как это "правильно" оптимизировать в питоне, на си я бы смаппил файл на память, а потом пробежался простым memchr

и я знаю, что при этом реально память не будет забиваться, потому что все подгруженные страницы могут быть (и будут) безболезненно выгружены операционкой

Aragaer
19.06.2019
20:42:20
ну да, и вот по ней потом find-ом бегать

Jaroslaw
19.06.2019
20:47:58
https://docs.python.org/3.7/library/mmap.html
а без декораторов можно пережить?

Tishka17
19.06.2019
20:48:31
а без декораторов можно пережить?
Казалось бы как связан mmap и декораторы

Jaroslaw
19.06.2019
20:48:43
я случайно именно это переслал))

Tishka17
19.06.2019
20:49:01
Короче, декораторы ты можешь не делать, но понимать как они работают должен

Особенно ту часть, где decorator()()

Jaroslaw
19.06.2019
20:52:06
Особенно ту часть, где decorator()()
мне кажется, что это работает так-же как у массивов типа: print( l[3][0])

Google
Tishka17
19.06.2019
20:52:23
Похоже, да

https://m.habr.com/ru/post/141411/

Глянь

Вроде подробно

Jaroslaw
19.06.2019
20:54:09
о я не один, кто это не понимает

Владимир
19.06.2019
20:54:32
Ищу наставника который индивидуально обучит программированию желательно на Питон готов на почасовую оплату, нужен наставник который на примере конкретных задач к реализации будет помогать мне изучать язык и программирование, Есть идеи очень востребованных ИТ продуктов хочу реализовать нужна помощь. Спасибо.

TpouHuK
19.06.2019
20:56:36
Tishka17
19.06.2019
20:56:57
о я не один, кто это не понимает
В общем, полезно разобраться в этом. Многое в голове уложишь

?Rain?
19.06.2019
20:59:39
Хде
https://www.youtube.com/watch?v=abXTpUOj7tE

Bobrikwhy
19.06.2019
21:05:20
Драстк ребзя

Че на счёт kotline думаете ?

..:: махуноф ::..
19.06.2019
21:06:08
Tishka17
19.06.2019
21:10:12
Bobrikwhy
19.06.2019
21:10:38
Тот тот

Они похожи прост

И решил узнать что думаете

Aragaer
19.06.2019
21:11:04
чем похожи?

Bobrikwhy
19.06.2019
21:11:27
Немного синтаксисом

Google
Aragaer
19.06.2019
21:11:27
я думаю, что котлин это попытка исправить в жаве не то, что в ней надо исправлять

Bobrikwhy
19.06.2019
21:11:30
Все коротко

koder
19.06.2019
21:12:57
А что надо было?
учитывая как котлин зашел - видимо надо было

Admin
ERROR: S client not available

koder
19.06.2019
21:13:05
Немного синтаксисом
как свинья на коня

Aragaer
19.06.2019
21:13:07
выкинуть из джава спеки обязательное требование рефлекшна, что позволит нормально оптимизировать байткод

потому что когда ты добавляешь идиоматичные слои абстракций, это не должно влиять на рантайм

Tishka17
19.06.2019
21:14:17
koder
19.06.2019
21:14:28
А что надо было?
точнее не совсем исправить. Было достаточное количесво людей, которые хотели получить все что уже было в jvm мире, но не хотели несколько более хипстерского языка при этом

Aragaer
19.06.2019
21:14:44
когда я включил максимально агрессивную оптимизацию прогардом под андроид, тогда я увидел, что добавление +1 слоя абстракции вообще не меняет байткод. Вот тогда я успокоился и перестал напрягаться по поводу идиоматичной жавы

koder
19.06.2019
21:14:55
обычно люди, которые судят по никам - ничерта не понимают в жизни

Aragaer
19.06.2019
21:15:31
а котлин это "та же жава, но с хипстерским синтаксисом, а производительность нас не колышет"

мне с моими заскоками простого сишника это не нравится

Tishka17
19.06.2019
21:16:32
?

koder
19.06.2019
21:16:47
ок, найди мне там "одинаковости" синтаксиса. Желательно такие, которых нет в С++

Google
koder
19.06.2019
21:17:26
Ушел от темы
да ты в нее никогда не и заходил то явно

Jaroslaw
19.06.2019
21:17:53
Stop Booling

Tishka17
19.06.2019
21:17:58
Ушел от темы
А правда, что ты там похожего в сиетаксисе нашел

Bobrikwhy
19.06.2019
21:18:28
Владимир
19.06.2019
21:18:58
mkdev.me
спасибо

koder
19.06.2019
21:19:26
Краткость и некоторые операции
тогда японский похож на древнеегипежский. Картинки и все по строчкам

Tishka17
19.06.2019
21:19:29
Краткость и некоторые операции
Тогда и js и свифт похожи синтаксисом

Серый
19.06.2019
21:19:29
Серьезно, переходить в споре с темы спора на личности, тем более так нелепо - логическая ошибка и в принципе глупо выглядит

Bobrikwhy
19.06.2019
21:20:07
Tishka17
19.06.2019
21:21:16
Что плохого ?
Нет, правда. Это совершенно разные языки, в которых очень мало общего кроме того, что они императивные и Тьюринг полные

Forevka ÐΞV
19.06.2019
21:22:04
Так что этот факт можно опустить

Tishka17
19.06.2019
21:23:17
Но... Почти все языки тюринг полные...
Мне просто очень хотелось что-то ещё умное вставить

Страница 9381 из 9768