Tulip / asyncIO: dlaczego nie wszystkie połączenia są asynchroniczne i określają, kiedy rzeczy powinny być synchroniczne?

Poszedłem do spotkania SF Pythona, kiedy Guidorozmawiałem o Tulip, przyszłej bibliotece asyncIO do asynchronicznych operacji w Pythonie.

Odejście polega na tym, że jeśli chcesz, aby coś było uruchamiane asynchronicznie, możesz użyć"yield from" + expression i kilka dekoratorów, aby określić, że połączenie do tego, co następuje poyield from powinien być wykonywany asynchronicznie. Dobrą rzeczą jest to, że można normalnie czytać instrukcje w tej funkcji (tak jakby była synchroniczna) i będzie zachowywać się tak, jakby była synchroniczna w odniesieniu do wykonania tej funkcji (wartości zwracane i propagacja i obsługa błędów / wyjątków). ).

Moje pytanie brzmi: dlaczego nie mieć odwrotnego zachowania, mianowicie mieć wszystkie wywołania funkcji domyślnie asynchroniczne (i bezyield from) i mają inną wyraźną składnię, jeśli chcesz wykonać coś synchronicznie?

(poza potrzebą innej specyfikacji słów kluczowych / składni)

questionAnswers(2)

yourAnswerToTheQuestion