为了账号安全,请及时绑定邮箱和手机立即绑定

在线等,挺急的!为什么我用返回函数进行for循环列表,元素type是list各位有什么建议?

在线等,挺急的!为什么我用返回函数进行for循环列表,元素type是list各位有什么建议?

慕容708150 2019-07-27 09:40:08
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]
                            
查看完整回答
反对 回复 2019-07-27
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

你这个函数本身是没有问题的,问题出在你传递参数的时候。
defmyF4(*args):
defmyF5():
sum=0
foriinargs:
sum=sum+i
returnsum
returnmyF5
如果你用如下的形式调用,则不会出现问题:
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)#wrong
print(b())
那就表明args这个元组中只包含一个元素,而这个元素是一个包含五个数字的列表,即args=([1,2,3,4,5],),于是你在sum=sum+i时会出现类型不符的问题。
                            
查看完整回答
反对 回复 2019-07-27

添加回答

代码语言

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号