Дмитрий
Tishka17
Nikita
люди подскажите бесплатный vpn на печку пожалуйста
do not import flask
Был же торнадо раньше тяжкий и балдежный, а сейчас одно пуссигейство осталось
Nikita
пк
Tishka17
Nikita
Nikita
а деплоить каждый раз его не оч
Aleksey
do not import flask
Так лол, для таких целей и tunnelbear сгодится
do not import flask
Не мучайся ни с какими strong Swan 'ами
Ладно
Народ, помогите! Я хочу создать голосового ассистента(по типу Алисы). Есть примеры кодов или какие-то статьи по этой теме?
do not import flask
Artem
Ладно
Спасибо
Aleksey
вот тема
Nikita
спасибо
Tishka17
do not import flask
Скачать бинарник и нажать установить, либо ебаться, хоть и минимально с установкой
Tishka17
Ну можно конечно openvpn, но для него надо ещё клиенты искать
Tishka17
Aleksey
Anonymous
объясните пожалуйста, почему ничего не выводится?
def decorator():
def wrapper():
print("Code before performance")
show()
print("Code after performance")
return wrapper
def show():
print("I am simple Function")
decorator()
do not import flask
🍁 Jaŭhien
Tishka17
Tishka17
Anonymous
так я же в конце написал "decorator()", это разве не вызывает ничего?
do not import flask
Каких сертификатов?
Там же IKEv2 юзается, а оно всегда требует сертификатов
Anonymous
Tishka17
Tishka17
Anonymous
Tishka17
Серый
Привет. Есть ли возможность перейти к определенной строке большого файла (seek по new_lines) без прохода циклом по файлу и без кеширования файла используя linecache?
Anonymous
а как так
Anonymous
оно же просто повторно вызывает decorator? нет?
Aragaer
Tishka17
Tishka17
Anonymous
понять как работают декораторы
Aragaer
декораторы обычно принимают аргумент
Aragaer
твой декоратор не принимает аргумента
Anonymous
ну вот какой он сейчас
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
если offset это позиция в байтах, то seek
Aragaer
Aragaer
у тебя есть функция show, а x это она же, завернутая в декоратор
Tishka17
Давай я попробую:
1. Когда ты пишешь
@dec
def x():...
Это примерно то же самое что
def f():...
x=dec(f)
Tishka17
2. Когда ты в декораторе возвращаешь функцию она используется вместо оригинальной
Tishka17
3. Когда у тебя декоратор имеет вид
def dec(f):
...
return otherfunc
@dec
def x():...
Как мы видели выше это эквивалентно
x=otherfunc
Поэтому когда ты вызываешь x() на самом деле просто вызывается otherfunc()
Tishka17
4. Так как обычно эту otherfunc создают внутри декоратора, она имеет доступ ко всему что в нем есть. В частности к оригинальной функции, так как она передается аргументом в декоратор
Tishka17
Tishka17
Видишь, х перестал быть функцией. В него записалось то, что вернцл декоратор
Tishka17
Соответственно, чтобы х был функцией, декоратор должен вернуть функцию
Tishka17
Он может вернуть ту же самую функцию. Но тогда они и работать будет как раньше
Tishka17
Чтобы при вызове х делалось что-то другое, декоратор должен вернуть другую функцию
Tishka17
Ну и наконец чтобы эта функция была не одна и та же постоянно, а как-то учитывала то, что мы передали, то мы создаём ее прям внутри при каждом вызове декоратора
Aragaer
но ты можешь сделать @decorator
def show():
...
Aragaer
тогда будет по-другому
Tishka17
Aragaer
если через @, то внутрь декоратора попадет show как написано, а потом результат декоратора (завернутая функция) будет присвоена в show (то есть функция будет заменена на завернутую)
Tishka17
Блин. В отрыве от контекста не очень. Надо будет переписать
Aragaer
и я знаю, что при этом реально память не будет забиваться, потому что все подгруженные страницы могут быть (и будут) безболезненно выгружены операционкой
Tishka17
Aragaer
ну да, и вот по ней потом find-ом бегать
Anonymous
Anonymous
я случайно именно это переслал))
Tishka17
Короче, декораторы ты можешь не делать, но понимать как они работают должен
Tishka17
Особенно ту часть, где decorator()()
Tishka17
Похоже, да