hlsxiannv 发表于 2020-6-4 17:40:39

关于python中*param的用法有点问题求助

请问大家,函数定义是用收集参数*param时,在调用的时候能否直接输入一个列表?入门,请大家帮忙!!!
例如:
def a(*param):
        length = len(param)
        for i in range(length):
                print(param)
                print('adsad')

list =
a(list)

难道:
a(1, 2, 3, 4, 5)
只能这样用吗?

qiuyouzhi 发表于 2020-6-4 17:41:42

当然可以,param的结果就是:
()
你如果想用这个列表得这样:
list1 = param

Twilight6 发表于 2020-6-4 17:42:05

可以的,参数你任意输入,主要是看你程序主要作用是什么

hlsxiannv 发表于 2020-6-4 17:48:11

qiuyouzhi 发表于 2020-6-4 17:41
当然可以,param的结果就是:
()
你如果想用这个列表得这样:

谢谢大佬的回复,可我想要的结果是list这个列表的每个数对应收集参数*param的每一个数,以下是我课后习题的代码,第19讲动动手,请帮我看看,该怎么修改呢?
def count(*param):
    length = len(param)
    for m in range(length):
      letters = 0
      spaces = 0
      nums = 0
      others = 0
      for each in param:
            if each.isalpha():
                letters += 1
            elif each.isdigit():
                nums += 1
            elif each == ' ':
                spaces += 1
            else:
                others += 1
      print('第 %d 个字符串共有 %d 个英文字母, %d 个数字, %d 个空格, %d 个其他字符' %(m+1, letters, nums, spaces, others))

a = 1
i = 0
list = []
last = '#'
while a:
    string = str(input('请输入需要检查的所有字符串,回车键结束输入并开始输入下一个字符串,输入#结束所有输入:'))
    list.append(string)
    if last == list:
      print('输入结束!')
      a = 0
    i += 1
count(list)

hlsxiannv 发表于 2020-6-4 17:49:29

Twilight6 发表于 2020-6-4 17:42
可以的,参数你任意输入,主要是看你程序主要作用是什么

谢谢大佬的回复,可我想要的结果是list这个列表的每个数对应收集参数*param的每一个数,以下是我课后习题的代码,第19讲动动手,请帮我看看,该怎么修改呢?def count(*param):
    length = len(param)
    for m in range(length):
      zimus = 0
      spaces = 0
      nums = 0
      others = 0
      for each in param:
            if each.isalpha():
                zimus += 1
            elif each.isdigit():
                nums += 1
            elif each == ' ':
                spaces += 1
            else:
                others += 1
      print('第 %d 个字符串共有 %d 个英文字母, %d 个数字, %d 个空格, %d 个其他字符' %(m+1, zimus, nums, spaces, others))

a = 1
i = 0
list = []
last = '#'
while a:
    string = str(input('请输入需要检查的所有字符串,回车键结束输入并开始输入下一个字符串,输入#结束所有输入:'))
    list.append(string)
    if last == list:
      print('输入结束!')
      a = 0
    i += 1
count(list)

qiuyouzhi 发表于 2020-6-4 17:52:29

hlsxiannv 发表于 2020-6-4 17:48
谢谢大佬的回复,可我想要的结果是list这个列表的每个数对应收集参数*param的每一个数,以下是我课后习题 ...

调用改成count(*list)

hlsxiannv 发表于 2020-6-4 17:54:54

qiuyouzhi 发表于 2020-6-4 17:52
调用改成count(*list)

谢谢谢谢,改好了!太感谢了{:10_287:}

jackz007 发表于 2020-6-4 17:59:24

a(list)
      用一个列表作为输入参数,那么,可变参数 param 这时就只代表一个输入参数,这个参数就是这个列表。
a(1, 2, 3, 4, 5)
      用 5 个参数作为输入参数,那么,可变参数 param 这时就代表着 5 个参数。与前者相比,显然,这种方式更加符合可变参数设定的用法。

zwhe 发表于 2020-6-6 10:42:22

{:7_131:}
页: [1]
查看完整版本: 关于python中*param的用法有点问题求助