I am trying to write a function that yields two variables and also raises an exception based on a condition. Here is a minimal example: def func(): var1 = 0 var2 = 1 yield var1, var2 if not var1 > var2: raise Exception(var1,var2) var1, var2 = (1,1) var1,var2 = func() This structure currently doesn't yield var1, var2 and raises an exception. I need it to yield and raise an exception within this function itself so that other modules can directly use this function without additional code. If the yield statement is not a good idea then what is? tried - [_ for _ in func()] but var1 and var2 value doesn't change as expected from yield. tried - var1, var2 = next(func()) this yields but doesnt raise an exception. Continue reading...