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

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

红颜莎娜

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

慕盖茨4494581

你这个函数本身是没有问题的,问题出在你传递参数的时候。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时会出现类型不符的问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript