Как Padraic Cunningham выяснил , это на самом деле не ошибка.
Однако это связанное с ошибкой, которую вы не сделали и вам, используя флаг, который вы, вероятно, не должны использовать, поэтому я оставлю свой более ранний ответ ниже, хотя его правильный ответ на вашу проблему.
недавнее изменение (где-то между 3.4.1 и 3.4.3 и между 2.7.3 и 2.7.8), которое влияет на это. Перед этим изменением вы не сможете даже скомпилировать этот шаблон без повышения OverflowError
.
Что еще более важно, почему вы используете re.L
? Механизм re.L
не означает «использовать правила Юникода для моей локали», это означает «использовать некоторые неуказанные правила, отличные от Юникода, которые действительно имеют смысл только для латинских производных локалей и могут работать неправильно на Windows». Или, как , docs положил его:
Задает
blockquote>\w
,\W
,\b
,\B
,\s
и\S
зависимые по текущему языку. Использование этого флага не рекомендуется, так как языковой механизм очень ненадежный и он обрабатывает только одну «культуру» в любой момент; вместо этого вы должны использовать Unicode-сопоставление, которое по умолчанию используется в шаблонах Python 3 для Unicode (str).См. bug # 22407 и связанный поток python-dev для недавнего обсуждения этого вопроса.
И если я удалю флаг
re.L
, теперь код теперь компилируется просто отлично на 3.4.1. (Я также получаю «правильные» результаты как на 3.4.1, так и на 3.4.3, но это просто совпадение: теперь я намеренно не передаю винтовой флаг и ввинчиваю его в первую версию и все равно случайно не передаю винтовой флаг и завинчивание его во втором, так что они совпадают ...)Итак, даже если это была ошибка, есть хороший шанс, что он будет закрыт WONTFIX. Разрешение для # 22407 состояло в том, чтобы осудить
re.L
для шаблонов неbytes
в 3.5 и удалить его в 3.6, поэтому я сомневаюсь, что кто-то позаботится об исправлении ошибок с ним сейчас. (Не говоря уже о том, что самre
теоретически уходит в пользуregex
в течение одного из этих десятилетий ... и IIRCregex
также не одобрял флагL
, если вы не используетеbytes
иre
-совместимый режим.)
async
просто сахар для возврата обещания. Поэтому, когда вы говорите
async sleep_not_Working()
{
setTimeout( ()=> {
return "hello";
}, 3000);
}
Это в основном то же самое, что и это:
function sleep_not_Working()
{
return new Promise((resolve, reject) => {
setTimeout( ()=> {
return "hello";
}, 3000);
})
}
Но это не так, как работают обещания. Возврат из внутренней анонимной функции не разрешает обещание, единственное, что разрешает обещание, это resolve('hello')