@gen.coroutine
def my_func(x):
return 2 * x
Zasadniczo, współprogram tornado.
Robię listę takich jak:
my_funcs = []
for x in range(0, 10):
f = yield my_func(x)
my_funcs.append(x)
Próbując zrobić to lista rozumienie takich jak:
my_funcs = [yield my_func(i) for i in range(0,10)]
zdałem sobie sprawę, było to nieważne składni. To turns out you can do this użyciu ()
wokół wydajność:
my_funcs = [(yield my_func(i)) for i in range(0,10)]
- robi to zachowanie (składnię do owijania
yield foo()
połączenia w(), takie jak(yield foo())
w celu umożliwienia tym powyższy kod do wykonania) mają określony typ nazwy ?- Czy jest to forma precedensu operatora z
yield
?
- Czy jest to forma precedensu operatora z
- Czy to zachowanie zostało udokumentowane gdzieś w dokumencie
yield
?
Python 2.7.11 na OSX. Kod ten musi działać zarówno w Pythonie 2/3, dlatego powyższe rozumienie list nie jest dobrym pomysłem (patrz: here, dlaczego powyższy spis działa w Pythonie 2.7, ale jest uszkodzony w Pythonie 3).
Z powodu pierwszeństwa operatora. –
@MartijnPieters ale 'yield' jest [nie w dokumentach Python2 pod priorytetem operatora] (https://docs.python.org/2/reference/expressions.html#operator-precedence) - kod taki jak' m = [foobar () dla i w zakresie (0, 10)] "działa poprawnie i zgodnie z oczekiwaniami. – enderland
@PadraicCunningham Dodałem przykład, dlaczego w końcu doszedłem do zrozumienia list. – enderland