python第019讲课后作业第二题关于 * 的问题
第一行里面 count(*param)中加 * 的作用是什么啊?代码如下:
def count(*param):
length = len(param)
for i in range(length):
letters = 0
space = 0
digit = 0
others = 0
for each in param:
if each.isalpha():
letters += 1
elif each.isdigit():
digit += 1
elif each == ' ':
space += 1
else:
others += 1
print('第 %d 个字符串共有:英文字母 %d 个,数字 %d 个,空格 %d 个,其他字符 %d 个。' % (i+1, letters, digit, space, others))
count('I love fishc.com.', 'I love you, you love me.')
可以传入一个元组
默认是空元组
也就是说可以传入多个值
count('I love fishc.com.', 'I love you, you love me.')
所以这里就可以传入两个
本帖最后由 柿子饼同学 于 2021-3-24 10:13 编辑
带有*的参数称为收集参数,一般用于你也不知道要传入几个参数的时候。比如print()第一个参数就是收集参数。
事实上,py会将所有收集参数变成元组的形式>>> def a(*num):
print(type(num))
print(num)
>>> a(1, 2, 3)
<class 'tuple'>
(1, 2, 3)
>>> a()
<class 'tuple'>
()
带**的参数会打包成字典的形式>>> def b(**num):
print(type(num))
print(num)
>>> b(1, 2, 3)
Traceback (most recent call last):
File "<pyshell#21>", line 1, in <module>
b(1, 2, 3)
TypeError: b() takes 0 positional arguments but 3 were given
>>> b(a = 1,b = 2)
<class 'dict'>
{'a': 1, 'b': 2} 柿子饼同学 发表于 2021-3-24 10:09
带有*的参数称为收集参数,一般用于你也不知道要传入几个参数的时候。比如print()第一个参数就是收集参数。 ...
懂了,谢谢 Wzzhxy1 发表于 2021-3-24 10:25
懂了,谢谢
{:10_297:}
页:
[1]