python函数的不同类型的参数


在Python中定义函数时,可以给函数指定一些参数。今天我们就来讲一下这些参数的类型。函数的参数主要可以划分成:位置参数、默认参数、关键字参数、可变位置参数、可变关键字参数。需要说明的是,关键字参数严格来说只是一种参数的调用方式。


1. 位置参数


位置参数是最常见的参数类型,使用时只要注意参数的位置顺序和参数的数量就行。

注意:传值的数量要跟位置参数数量一致。比如上面定义的 f 函数要求传入两个参数,如果调用时只传入了一个参数,就会报错。

比如,

def f(a, b):

print(f"a的值是: {a}, b的值是: {b}")

f(1, 2) # 按照位置顺序传入参数,a等于1,b等于2

# f(1) # 会报错,因为只传入了一个参数,而函数f需要两个参数


2. 默认参数


我们可以给某些参数设置默认值,这样这个参数就变成了默认参数。如果调用函数时没传入该参数的值,就会使用这个默认值作为参数的值。

比如:

def f(a, b=3):

print(f"a的值是: {a}, b的值是: {b}")


f(1) # 这里只传入了a的值,b使用默认值3

f(1, 2) # 这里传入了a和b的值,b使用传入的值2


注意:默认参数必须放在位置参数之后,否则会导致语法错误。比如下面的代码就会报错:


# def f(a=1, b): # 会报错,因为默认参数a在位置参数b之前


3. 关键字参数


当函数有很多个参数时,按位置传值很容易弄错参数的对应关系。我们在调用函数时,可以指定参数名传值,这样传入的参数就是关键字参数。比如:

def f(a, b, c=4):

print(f"a的值是: {a}, b的值是: {b}, c的值是: {c}")


f(b=2, a=1) # 使用关键字参数调用,指定参数名传值,位置可以任意调换


注意:关键字参数在定义时,跟位置参数和默认参数没什么两样,只是在调用上,使用了关键字来传值调用。对于位置参数,还是全部都要有的,如果有漏掉,就会出错。另外,普通调用和关键字调用可以混合使用,但所有关键字调用必须要在普通调用的后面,否则会出错。例如:


# f(1, c=3, b=2) # 正确,前面是普通调用,后面是关键字调用

# f(1, c=3, 2) # 会报错,因为普通调用2放在了关键字调用后面


4. 可变位置参数


在编写函数时,有时我们不确定会传入多少参数,这时就需要用到可变位置参数。可变位置参数是指参数数量可变,定义函数时,可以用星号 * 来收集多个位置参数,将它们打包成一个元组。


def f(a, *b):

print(f"a的值是: {a}")

print(f"可变位置参数b是: {b}")

print(f"可变位置参数b的第一个值是: {b[0]}")


f(1, 2, 3, 4) # 传入一个位置参数a和多个可变位置参数,可变位置参数被打包成元组


注意:可变位置参数必须要在所有位置参数的后面。比如下面的代码就会出错:


# def f(a, b, *c, d): # 会报错,因为位置参数d在可变位置参数*c后面


虽然可以把默认参数放在可变位置参数后面,但使用这个默认参数时,就要用关键字调用,否则不管传入多少个参数,都会全部归到可变位置参数里面去。默认参数也可以放在可变位置参数前面,但这样默认值就只有在可变位置参数传入值为空时才用得上。


5. 可变关键字参数


如果遇到数量不确定的关键字参数,可以使用两个星号 ** 来定义可变关键字参数,这样可以收集多个关键字参数,将它们打包成一个字典。

def f(**kwargs):

print(f"可变关键字参数是: {kwargs}")

for key, value in kwargs.items():

print(f"键: {key}, 值: {value}")


f(name="Alice", age=25, city="New York") # 传入多个关键字参数,被打包成字典


注意:使用可变关键字参数时,必须把它放在位置参数的后面,否则会出错。另外,可变关键字参数必须要以关键字的形式传入,不能传入位置参数,否则也会报错。例如:


def f(a, **kwargs):

print(a, kwargs)

f(1, name="Bob") # 正确,位置参数a在前,可变关键字参数在后

# f(1, "Bob") # 会报错,因为不能在可变关键字参数中传入位置参数


在使用函数参数时,还有一些其他注意事项。本次教程主要讲解了参数的分类,其他内容我们会在后续的教程中讲解,感兴趣的朋友可以持续关注哦。

相关文章

Python 中 必须掌握的 20 个核心函数及其含义,不允许你不会

以下是 Python 中 必须掌握的 20 个核心函数及其含义,涵盖数据处理、文件操作、面向对象等关键领域,每个函数均附代码示例和应用场景:一、基础必备函数1.print()作用:输出内容到控制台示例...

你真的用对了吗?7个常被误用的Python内置函数及最佳实践

你是否曾经在使用多年的工具中突然发现一个新功能,然后感叹:“我怎么一直没发现这个?”没错,今天我们就来体验一把“Python函数版”的这种乐趣。这些函数很可能已经是你日常代码的一部分,但我敢打赌,你并...

Python函数

定义和基本内容def 函数名(传入参数): 函数体 return 返回值注意:参数、返回值如果不需要,可以省略。函数必须先定义后使用。参数之间使用逗号进行分割,传入的时候,按照顺序传入...

Python 函数的四种参数,你了解吗

Python 函数的四种参数是指在定义和调用函数时,可以使用的不同类型的参数。它们分别是:必传参数(positional arguments):这是最常见的参数类型,它要求按照函数定义时的顺序,依次传...

你不得不知道的10个最危险的Python函数

在Python中,某些函数如果使用不当,可能导致 安全漏洞、数据损坏、系统崩溃 甚至 远程代码执行(RCE)。以下是 10个最危险的Python函数,开发者必须谨慎使用:1.eval()与exec()...