赞
踩
在 python 自定义函数中如何实现可变数量的参数呢?这里有两种种方法来实现。
最有用的形式是对一个或多个参数指定一个默认值。这样创建的函数,可以用比定义时允许的更少的参数调用。
比如有打印班级学生信息的一个函数,函数参数包括学生学号、姓名、专业名、班级号和学院名,可以将其中一些信息设置为默认值,例如学院名,这样就可以根据具体情况传递不同数目的参数了。
def student_info(id_num, name, class_name="communication", class_num="1", department="computer"):
print('*'*20)
print(f'id_num = {id_num}')
print(f'name = {name}')
print(f'class_name = {class_name}')
print(f'class_num = {class_num}')
print(f'department = {department}')
student_info(33, 'bob')
student_info(23, 'busyboxs', class_name='software')
student_info(1, 'xiaoming', class_name='conputer', class_num=2)
需要注意的是: 默认值只会执行一次。这条规则在默认值为可变对象(列表、字典以及大多数类实例)时很重要。
例如
def f(num, L=[]):
L.append(num)
return L
print(f(1))
print(f(2))
print(f(3))
其输出结果如下
[1]
[1, 2]
[1, 2, 3]
可以在函数的参数形式中传入 *args
和 **kwargs
形式的参数。*args
表示对元组形式的参数进行解析,**kwargs
表示对字典类型的参数进行解析。对于名字 args
和 kwargs
也可以用其他名字替换,不过通常使用 *args
和 **kwargs
。
def print_input(required, *args, **kwargs):
print(required)
if args:
print(args)
if kwargs:
print(kwargs)
print_input('hello')
print('*'*20)
print_input('hello', 1, 2, 3)
print('*'*20)
print_input('hello', 1, 2, 3, 4, 5, name = "busyboxs", ID = "26", age = "25")
hello
********************
hello
(1, 2, 3)
********************
hello
(1, 2, 3, 4, 5)
{'name': 'busyboxs', 'ID': '26', 'age': '25'}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。