21.Python基础18_函数03_调用函数时的传参类型

本文深入讲解Python函数的参数类型,包括必需参数、关键字参数、默认参数和不定长参数的使用方法及注意事项,通过实例帮助理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下是调用函数时可使用的正式参数类型:

  • 必需参数
  • 关键字参数
  • 默认参数
  • 不定长参数

必需参数

  • 必需参数也就是位置参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
def Hello(name,age):
     print(F'你好,姓名:{name},年龄:{age}')  #函数体
Hello("静静",18)  #调用函数

运行结果:

你好,姓名:静静,年龄:18

  1. 会根据调用时传入的位置取值:
def Hello(name,age):
     print(F'你好,姓名:{name},年龄:{age}')  #函数体
Hello(18,"静静")  #调用函数

运行结果:

你好,姓名:18,年龄:静静

可见如果位置写错,运行时就会根据写的位置获取,与实际不符合;

  1. 如果少传入值或者多传入值都会直接报错:
def Hello(name,age):
     print(F'你好,姓名:{name},年龄:{age}')  #函数体
Hello("静静")  #调用函数

运行结果;

Traceback (most recent call last):
  File "C:/workspace/pythonTest/0924/func.py", line 3, in <module>
    Hello("静静")  #调用函数
TypeError: Hello() missing 1 required positional argument: 'age'

关键字参数

关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。

使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。

def Hello(name,age):
     print(F'你好,姓名:{name},年龄:{age}')  #函数体
Hello(age=19,name="静静")  #调用函数

运行结果:

你好,姓名:静静,年龄:19

默认参数

调用函数时,如果没有传递参数,则会使用默认参数。以下实例中如果没有传入 age 参数,则使用默认值:

def Hello(name,age=12):
     print(F'你好,姓名:{name},年龄:{age}')  
Hello(name="静静")  #调用函数时没有传入年龄

运行结果:

你好,姓名:静静,年龄:12

不定长参数

你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述 2 种参数不同,声明时不会命名。基本语法如下:

  • 加了星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。
  • 加了两个星号 ** 的参数会以字典的形式导入。

第一种形式的不定长参数,在传入额外的参数时可以不用指明参数名,直接传入参数值即可,

def sum(a,b,*args):
    print(a)
    print(b)
    print(args)


sum(11,22,33,44,55,66,77)
sum(11,22,33)
sum(11,22)

运行结果:

11
22
(33, 44, 55, 66, 77)
11
22
(33,)
11
22
()

第二种因为返回的是字典,所以传入时需要指定参数名。

def test(a,b,c=33,*args,**kwargs):
    print(a)
    print(b)
    print(c)
    print(args)
    print(kwargs)

#函数调用
test(11,22,33,44,55,task=99,done=89)

运行结果:

11
22
33
(44, 55)
{'task': 99, 'done': 89}

但是注意关键字参数声明时和调用必须写在最后面不然会报错:,同样默认参数也要写在后面;

test(11,22,33,44,task=99,done=89,55)

运行结果:

C:\softwore\Python\python.exe C:/workspace/pythonTest/0924/func.py
  File "C:/workspace/pythonTest/0924/func.py", line 41
    test(11,22,33,44,task=99,done=89,55)
                                    ^
SyntaxError: positional argument follows keyword argument

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值