m0_64912051 2021-12-06 15:15 采纳率: 100%
浏览 353
已结题

函数传参的时候,出现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)

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

我想要达到的结果

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

  • 写回答

1条回答 默认 最新

  • 陈年椰子 2021-12-06 17:22
    关注

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

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

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

    estimated(size,None,time)   
    estimated(size,None,time=time)   
    estimated(size,number=None,time=time)  
    estimated(size=size,number=None,time=time)  
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月14日
  • 已采纳回答 12月6日
  • 创建了问题 12月6日

悬赏问题

  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效