You're welcome to adjust the style to suit the projects' preferences. I prefer ternary statements for assignment because it communicates better:

- the left hand argument is referenced exactly once.
- the assignment is obvious (there's no code path that could avoid assignment).
- the branch is obvious (one or the other).
- there's no temptation to inject additional behavior as there might be with a code block.

I did recognize the unconditional construction of the two iterators, but I considered the costs to be negligible. In general, I would only consider costs of function calls and object construction/destruction in highly sensitive tight loops. Perhaps this method falls into that category for some applications, but I suspect not as it's likely to be I/O bound instead. That said, if you wanted to keep the ternary operator but not have the unconditional construction, you could easily:

```
chunks = iter_slices(self._content, chunk_size) if self._content_consumed else generate()
```

I chose to create variables in an attempt to create more self-documenting code. Giving names to reused_chunks and stream_chunks adds clarity to the behavior. I believe the clarity of purpose outweighs the performance costs of unconditional construction.

But again, please feel free to accept my contribution as is and then tweak it to suit your preferences.