Congratulate 发表于 2020-7-25 16:55:37

关于 def test(*params)的问题

def test(*params):
    print("有%d个参数"% len(params))
    print("其中第三个参数是%s"%params)
test('F','i','s','h','C',)
def test(*params):
    print("有%d个参数"% len(params))
    print("其中第三个参数是%s"%tuple('FishC'))
test(tuple('FishC'))
这两串代码,第1个运行完显示是5个参数,而第二个运行后显示1个参数。(此处参数是程序里%d的那个数)
有谁能解释下吗{:10_266:}

永恒的蓝色梦想 发表于 2020-7-25 16:59:03

test('F', 'i', 's', 'h', 'C')和test(('F', 'i', 's', 'h', 'C'))能一样吗?

Congratulate 发表于 2020-7-25 17:00:35

永恒的蓝色梦想 发表于 2020-7-25 16:59
和能一样吗?

我还真不知道,请问有什么区别么{:10_245:}

qiuyouzhi 发表于 2020-7-25 17:03:04

Congratulate 发表于 2020-7-25 17:00
我还真不知道,请问有什么区别么

假如把5个人当参数,参数的长度是5.
但是把5个人放进一个房子里,让房子当参数的话,房子只有一个,所以参数长度是1.

Congratulate 发表于 2020-7-25 17:14:11

qiuyouzhi 发表于 2020-7-25 17:03
假如把5个人当参数,参数的长度是5.
但是把5个人放进一个房子里,让房子当参数的话,房子只有一个,所以 ...

那该怎么改才能做到像第一个代码一样。让他变成5个

永恒的蓝色梦想 发表于 2020-7-25 17:34:26

Congratulate 发表于 2020-7-25 17:14
那该怎么改才能做到像第一个代码一样。让他变成5个

def test(*params):
    print("有%d个参数"% len(params))
    print("其中第三个参数是%s"%tuple('FishC'))
test(*tuple('FishC'))

Congratulate 发表于 2020-7-25 21:38:29

永恒的蓝色梦想 发表于 2020-7-25 17:34


为什么你加个星号就可以了?这个星号代表了什么?test(*tuple('FishC')),能通俗的解释下吗{:10_254:}

永恒的蓝色梦想 发表于 2020-7-25 22:32:30

Congratulate 发表于 2020-7-25 21:38
为什么你加个星号就可以了?这个星号代表了什么?,能通俗的解释下吗

解包,就是把所有的元素当作单独的参数传入。
页: [1]
查看完整版本: 关于 def test(*params)的问题