I am trying to extend a tuple in a yield statement, but I am getting SyntaxError. Is this possible, or is it an operator *only for function calls?
The following is an example:
class Inner(object):
def __init__(self):
self._vals = {'a': 1,
'b': 2,
'c': 3,
'd': 4}
def __iter__(self):
for key, val in self._vals.items():
yield key, val
class Outer(object):
def __init__(self):
self._morevals = {"foo": Inner(),
"bar": Inner()}
def __iter__(self):
for key, moreval in self._morevals.items():
for val in moreval:
yield key, *val
object_under_test = Outer()
for outer_key, inner_key, inner_value in object_under_test:
print("{} {} {}".format(outer_key, inner_key, inner_value))
Instead, I get this error:
yield key, *val
^
SyntaxError: invalid syntax
source
share