函数传参的时候,出现positional argument follows keyword argument报错

问题遇到的现象和发生背景

请问为什么两种计算方式中,工时计算可以将time = None 放入函数调用的括号中,而当我把人数计算中的number = None放入调用函数的括号中时,出现报错

问题相关代码,请勿粘贴截图
import math

def estimated(size=1,number=None,time=None):
    if (number == None) and (time != None):
        number = math.ceil(size * 80 / time)
        print('项目大小为%.1f个标准项目,如果需要在%.1f个工时完成,则需要人力数量为:%d人' %(size,time,number))  
    elif (number != None) and (time == None):
        time = size * 80 / number
        print('项目大小为%.1f个标准项目,使用%d个人力完成,则需要工时数量为:%.1f个' %(size,number,time)) 
 
choice = int(input('请选择您想计算的数据类型,1为工时计算,2为人数计算'))
if choice == 1:
    number = int(input('请输入工作人数'))
    size = int(input('请输入任务大小'))
    
    estimated(size,number,time=None)
if choice == 2:
    size = int(input('请输入任务大小'))
    time = int(input('请输入工时长短'))
    
    estimated(size,number=None,time)

运行结果及报错内容
bash:122$ python ~/classroom/apps-1-id-5cd9765d19bbcf00015547b5/122/main.py
  File "/home/python-class/classroom/apps-1-id-5cd9765d19bbcf00015547b5/122/main.py", line 21
    estimated(size,number=None,time)
                               ^
SyntaxError: positional argument follows keyword argument

我的解答思路和尝试过的方法

在上面代码的基础上,我尝试了这种方法

if choice == 2:
    size = int(input('请输入任务大小'))
    time = int(input('请输入工时长短'))
    
    estimated(size=size,number=None,time=time)

直接传入参数,但是明明感觉位置传参也可以啊,明明位置都对

我想要达到的结果

希望能搞懂为什么上面不对,以及为什么改了之后又可以了

通过位置参数和关键字参数结合传参(注意关键字参数必须在位置参数的后面)

意思就是要用关键字传参,那么最后一个必须是关键字参数,然后一直倒推。

以下都合法,其他的不合法

estimated(size,None,time)   
estimated(size,None,time=time)   
estimated(size,number=None,time=time)  
estimated(size=size,number=None,time=time)