总结 python 函数中的不同参数类型的使用方法。
在调用函数时,通常会传递参数,函数内部的代码保持不变,针对 不同的参数 处理 不同的数据。
有位置传参、关键字传参、默认值参数、多值参数等。
形参和实参:
参数传递的过程,就是 把实参的引用 传递给 形参 ,使用实参的值来执行函数体的过程。
在 Python
中,函数的 实参/返回值 都是是靠 引用 来传递来的
按照参数位置,依次传递参数,这是最普通的方式。
def location(a, b)
print(a + b)
location(3, 9)
"调用函数时,按顺序传递参数,3 传给 a,9 传给 b"
如果不想严格按照顺序传递参数,也可以按关键字传递。
def location(a, b)
print(a + b)
location(b = 3, a = 9)
"调用函数时,按关键字传递参数,3 传给 b,9 传给 a"
定义函数时,可以给 某个参数 赋值一个默认值,具有默认值的参数就叫做 缺省参数
例如:对列表排序的方法
gl_num_list = [6, 3, 9]
"默认就是升序排序,因为这种应用需求更多"
gl_num_list.sort()
print(gl_num_list)
"只有当需要降序排序时,才需要传递 'reverse' 参数"
gl_num_list.sort(reverse=True)
print(gl_num_list)
缺省参数的定义位置:
调用带有多个缺省参数的函数:
def print_info(name, title="", gender=True):
gender_text = "男生"
if not gender:
gender_text = "女生"
print("%s%s 是 %s" % (title, name, gender_text))
# 提示:在指定缺省参数的默认值时,应该使用最常见的值作为默认值!
print_info("小明")
print_info("老王", title="班长")
print_info("小美", gender=False)
当函数需要处理的参数个数不确定时,可使用 多值参数。
python
中有两种多值参数:
*
*
一般在给多值参数命名时,习惯使用以下两个名字
*args
— 存放 元组 参数**kwargs
— 存放 字典 参数,(kw
即 keyword
,kwargs
即 键值对参数)def demo(num, *args, **kwargs):
print(num)
print(args)
print(kwargs)
demo(1, 2, 3, 4, 5, name="小明", age=18, gender=True)
输出:
1
(2, 3, 4, 5)
{'name': '小明', 'age': 18, 'gender': True}
在上面多值参数传递时,实际上使用了拆包功能。
拆包主要用于元组和字典参数的传递。
在调用带有多值参数的函数时,使用拆包简化参数的传递:
args
*
kwargs
**
def demo(*args, **kwargs):
print(args)
print(kwargs)
gl_nums = (1, 2, 3)
gl_xiaoming = {"name": "小明", "age": 18}
"变量名前必须要加 * 号,否则不能无法正常拆包"
"错误演示(不加 * 号):"
demo(gl_nums, gl_xiaoming)
输出:
((1, 2, 3), {'name': '小明', 'age': 18})
{}
"正确演示(加 * 号):"
demo(*gl_nums, **gl_xiaoming)
输出:
(1, 2, 3)
{'name': '小明', 'age': 18}