python 函数多种参数传递方式

1. 简介

函数是组织好的,可重复使用的,用来实现特定功能的代码段。

# 定义函数
def add(x, y):
	result = x + y
	print("{} + {}的结果是:{}".format(x, y, result))

# 调用函数
add(1, 2)
  • 函数定义中,提供的xy,称之为形式参数(形参)
  • 调用函数中,提供的12,称之为实际参数(实参)

2. 函数的多种传参方式

1. 位置参数

定义:调用函数时根据函数定义的参数位置来传递参数

def my_fun(name, gender, age):
	print(f'我叫{name}, 性别{gender}, 今年{age}岁.')

# 位置参数
my_fun('猪小明', '男', 30)

输出结果如下:

我叫猪小明, 性别男, 今年30岁.

注意:传递的参数和定义的参数顺利及个数必须一致

2. 关键字参数

定义:函数调用时通过"键=值"键值对的形式传递参数,可以让函数更加清晰、容易使用,同时也不用遵循形参的顺序。

def my_fun(name, gender, age):
	print(f'我叫{name}, 性别{gender}, 今年{age}岁.')

# 关键字传参
my_fun(name='猪小明', gender='男', age=30)
# 可以不按照形参的固定位置传参
my_fun(name='猪小明', age=30, gender='男')
# 可以和位置参数混用,但是位置参数必须在前面,且匹配参数的顺序
my_fun('猪小明', age=30, gender='男')

输出结果如下:

我叫猪小明, 性别男, 今年30岁.
我叫猪小明, 性别男, 今年30岁.
我叫猪小明, 性别男, 今年30岁.

注意:函数在调用时,如果有位置参数时,位置参数必须在关键字参数的前面,但是关键词参数之间不存在先后顺序

3. 缺省参数

定义:缺省参数也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可以不用传递该默认参数的值。当调用函数时没有传递参数,就会使用默认参数。

def my_fun(name, gender, age=20):
	print(f'我叫{name}, 性别{gender}, 今年{age}岁.')

# 使用缺省参数age,调用时不传此参数
my_fun(name='猪小明', gender='男')
# 修改缺省参数age的值
my_fun(name='猪小明', gender='男', age=30)

输出结果如下:

我叫猪小明, 性别男, 今年20岁.
我叫猪小明, 性别男, 今年30岁.

注意:所有位置参数必须出现在默认参数前,包括函数定义和调用;函数调用时,如果为缺省参数传值则修改默认参数值,否则使用这个默认值。

4. 不定长参数

定义:不定长参数也叫作可变参数,用于不确定调用的时候会传递多少个参数的场景。不定长参数的类型分为两种,分别是位置传递和关键字传递

功能:当调用函数时,不确定参数个数时,可以使用不定长参数

4.1 位置传递

定义:传进的所有参数都会被args变量收集,它会根据传进参数的位置合并为一个元组(tuple)args是元组类型,这就是位置传递

def my_fun(*args):
	print(args)

# 传入一个参数
my_fun('猪小明')
# 传入两个参数
my_fun('猪小明', '男')

输出结果如下:

('猪小明',)
('猪小明', '男')

4.2 关键字传递

定义:参数是“键=值”键值对形式的情况下, 所有的键值对都会被kwargs接受, 同时会根据键值对组成字典。在函数中取值的时候可以根据key取出对应的值

def my_fun(**kwargs):
	print(kwargs)

# {'name': '猪小明', 'gender': '男', 'age': 30}
my_fun(name='猪小明', gender='男', age=30)

输出结果如下:

{'name': '猪小明', 'gender': '男', 'age': 30}
  • 位置不定长传递*号标记一个形式参数,以元组的形式接受参数,形式参数一般命名为args
  • 关键字不定长传递**号标记一个形式参数,以字典的形式接受参数,形式参数一般命名为kwargs
def printinfo(arg1, *args, **kwargs):
    print(arg1)
    print(args)
    print(kwargs)


printinfo(70, 60, 50)
# 70
# (60, 50)
# {}
printinfo(70, 60, 50, a=1, b=2)
# 70
# (60, 50)
# {'a': 1, 'b': 2}
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值