defmyF4(*args):defmyF5():sum=0foriinargs:sum=sum+ireturnsumreturnmyF5a=[1,2,3,4,5]b=myF4(a)print(b())加粗的代码段,我修改为显示type时,类型是list的,pycharm运行时,也无法运行。但单独进行列表循环时又可以运行。
2 回答

红颜莎娜
TA贡献1842条经验 获得超13个赞
首先,提问问题请注意格式当你传递a也就是[1,2,3,4,5]的时候,因为你的函数myF4的形参是*args,它会把所有的参数打包成tuple给args,换句话说,args是一个tuple,而你真正想遍历的是[1,2,3,4,5],它是args的第一个元素,所以应该是foriinargs[0]

慕盖茨4494581
TA贡献1850条经验 获得超11个赞
你这个函数本身是没有问题的,问题出在你传递参数的时候。defmyF4(*args):defmyF5():sum=0foriinargs:sum=sum+ireturnsumreturnmyF5如果你用如下的形式调用,则不会出现问题:b=myF4(1,2,3,4,5)print(b())或者如下的形式也是没有问题的:a=[1,2,3,4,5]b=myF4(*a)print(b())但是如果你直接将a传递进去:a=[1,2,3,4,5]b=myF4(a)#wrongprint(b())那就表明args这个元组中只包含一个元素,而这个元素是一个包含五个数字的列表,即args=([1,2,3,4,5],),于是你在sum=sum+i时会出现类型不符的问题。
添加回答
举报
0/150
提交
取消