大整数相乘

有两个用字符串表示的非常大的大整数,算出他们的乘积,也是用字符串表示。不能用系统自带的大整数类型。
输入描述:
空格分隔的两个字符串,代表输入的两个大整数
输出描述:
输入的乘积,用字符串表示
输入例子1:
72106547548473106236 982161082972751393

输出例子1:
70820244829634538040848656466105986748

 1 def get_mul(num, k):
 2     mid_val = 0
 3     result = []
 4     for i in num[::-1]:
 5         temp = int(i)*k + mid_val
 6         if temp < 10:
 7             mid_val = 0
 8             result.append(temp)
 9         else:
10             result.append(temp % 10)
11             mid_val = temp // 10
12     if mid_val > 0:
13         result.append(mid_val)
14     return result[::-1]
15 
16 def get_sum(s1, s2):
17     len1 = len(s1)
18     len2 = len(s2)
19     if len1 > len2:
20         s2 = [0] * (len1 - len2) + s2
21     if len1 < len2:
22         s1 = [0] * (len2 - len1) + s1
23     mid_temp = 0
24     sum_list = []
25     for m in range(len(s1)-1, -1, -1):
26         temp_ = s1[m] + s2[m] + mid_temp
27         if temp_ < 10:
28             mid_temp = 0
29             sum_list.append(temp_)
30         else:
31             sum_list.append(temp_ % 10)
32             mid_temp = temp_ // 10
33     if mid_temp > 0:
34         sum_list.append(mid_temp)
35     return sum_list[::-1]
36 
37 if __name__ == '__main__':
38     str_ = input()
39     num1, num2 = str_.split()
40     first = get_mul(num1, int(num2[-1]))
41     for j in range(len(num2)-2, -1, -1):
42         mul_v = get_mul(num1, int(num2[j]))
43         mul_v = mul_v + [0]*(len(num2)-j-1)
44         cross_v = get_sum(first, mul_v)
45         first = cross_v
46     first = map(str, first)
47     final_result = ''.join(first)
48     print(final_result)