Very pythonic! I had to read up on izip_longest .. Here is my solution, idea is the same just using while loop.

class Solution(object):
def addStrings(self, num1, num2):
res, carry, digit = "", 0, 0
num1 = list(num1)
num2 = list(num2)
while num1 or num2 or carry:
x, y = 0, 0
if num1:
x = int(num1[-1])
num1.pop()
if num2:
y = int(num2[-1])
num2.pop()
carry, digit = (x + y + carry) / 10, (x + y + carry) % 10
res = str(digit) + res
return res