python中函数的多种传参方式

函数的传参方式有多种,位置参数、关键字参数、缺省参数、不定长参数。不过我们最常用的可能是位置参数,接下来让我们了解一下我们的参数

一、位置参数

调用函数时,编译器会将函数的实际参数按照位置顺序依次传递给形式参数,即将第1个实际参数传递给第1个形式参数,将第2个实际参数传递给第2个形式参数,依此类推。

其实也就是传递的参数和定义的参数顺序和个数一样。

举个例子

def xuesheng(name,age,gender):
    print(f'学生的名字是{name},年龄是{age},性别是{gender}')

#这是我们定义函数,所以我们调用时就应该按name、age、gender的顺序来

xuesheng('李华',18,'男')

 输出的结果是

学生的名字是李华,年龄是18,性别是男

二、关键字参数

       使用位置参数传值时,如果函数中存在多个参数,记住每个参数的位置及其含义并不是一件容易的事,此时可以使用关键字参数进行传递。关键字参数传递通过“形式参数 = 实际参数”(“键 = 值”)的格式将实际参数与形式参数相关联,根据形式参数的名称进行参数传递。

示例

def xuesheng(name,age,gender):
    print(f'学生的名字是{name},年龄是{age},性别是{gender}')


xuesheng(name = '李华',age = 18,gender = '男')

       此时调用时括号里的age = 18,name = '李华',gender = '男'的顺序是可以打乱的,输出结果都不变

学生的名字是李华,年龄是18,性别是男

        当我们函数调用时,如果有位置参数时,位置参数必须在关键字参数的前面,但关键字参数之间顺序可以改变,记住位置参数是一一对应的,不要把后面的写前面来了

def xuesheng(name,age,gender):
    print(f'学生的名字是{name},年龄是{age},性别是{gender}')

#两种都有时,前面位置参数只可能是名字,不会是年龄和性别,位置参数是有顺序的
xuesheng('李华',gender = '男',age = '18')

  关键字参数作用:可以让函数更加清晰、容易使用,同时也清除了参数的顺序需求

三、缺省参数(也称默认参数)

      定义函数时可以指定形式参数的默认值,调用函数时,若没有给带有默认值的形式参数传值,则直接使用参数的默认值;若给带有默认值的形式参数传值,则实际参数的值会覆盖默认值。但要注意的时所有位置参数必须出现在默认参数之前,包括函数定义与调用。

 示例

def xuesheng(name,age,gender = '男'):
    print(f'学生的名字是{name},年龄是{age},性别是{gender}')


xuesheng('李华','18')

 结果与前面还是一样,李华的输出信息没改变,如果我们在默认值那改成女,结果输出就是女(当然也可以在默认为男的时候传值进去,把他改成女)

四、不定长参数

        若要传入函数中的参数的个数不确定,可以使用不定长参数。不定长参数也称可变参数,此种参数接收参数的数量可以任意改变。他的类型分为位置传递和关键字传递。

       先提前说明一下*args 和 **kwargs 不是特殊的参数,只是编程人员约定的变量名字,args 是 arguments 的缩写,表示位置参数;kwargs 是 keyword arguments 的缩写,表示关键字参数。 其实并不是一定要写成 *args 和 **kwargs ,只有前面的 * (星号)才是必须的

1.位置传递

def test(*args):
    print(args)
    print(type(args))
#调用函数,传入任意个参数
test(1,2,3,'我','是','李华')

不定长参数*args用于接收不定数量的位置参数,调用函数时传入的所有参数被*args接收后以元组形式保存.

#以元组形式存在
(1, 2, 3, '我', '是', '李华')
<class 'tuple'>

2关键字参数

 传入参数要以“键 = 值”的形式才会被接受

def test(**kwargs):
    print(kwargs)
    print(type(kwargs))
#调用函数,传入任意个参数
test(a = '不',b = '爱',c = '作文')

   不定长参数**kwargs用于接收不定数量的关键字参数,调用函数时传入的所有参数被**kwargs接收后以字典形式保存下来。

{'a': '不', 'b': '爱', 'c': '作文'}
<class 'dict'>

       小结:

               1 位置参数一定要按顺序

               2 关键字参数必须以”键 = 值“的形式,如果和位置参数混用,位置参数一定要放前

               3 缺省参数默认值一定要放最后

               4 不定长参数要分清位置不定长和关键字不定长,前者以元组形式接收,"*"号不能忘,

后者以字典形式接收,"**"不能忘

  • 16
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值