🐕
最初の一回で終わって値を返すgenerator
JSでは
function * f() {
return 10;
}
const ret = f().next();
console.log(ret.value); // output: 10
console.log(ret.done); // output: true
というのができる。つまり、最初のnext
で終わって(done == true
)値を返す(10)。
これをPythonでやるにはどうすればよいかというのを考えた結果、以下になった。
def f():
return 10
yield
try:
next(f())
except StopIteration as e:
print(e.value)
もっとまともな方法はありそう(念の為書くと、return 10
ではなくyield 10
にするとStopIteration
例外が飛ばない)。
Discussion