Python函数参数详解:收集参数(*与**)及四种传参方式

苏见山
苏见山
发布时间:2026-10-13 | 5人浏览过
原创

本文深入解析Python函数的参数机制,重点讲解使用*和**进行参数收集的原理与区别,并系统介绍必选、默认、可选及关键字传参四种方式的具体用法、规则及注意事项,帮助开发者编写更灵活、规范的Python代码。

Python函数收集参数机制:*与**详解

在定义函数时,若需在参数名前添加单个星号(*),该函数即可接收零个或多个位置参数。这些被接收的参数在函数内部会被封装为一个元组返回。

当调用该函数时未传递任何参数,程序不会报错,而是返回一个空元组。需要注意的是,这种仅使用单个星号的方式存在局限,它无法收集关键字参数。

若要收集关键字参数,可采用另一种收集参数机制:在参数名前添加两个星号(**)。其用法与单个星号类似,但最终返回的是一个字典,其中参数名作为键,参数值作为键值。

单个星号(*)和两个星号(**)可以在同一个函数定义中同时使用,从而同时处理位置参数和关键字参数,并返回特定的组合结果。

参数收集机制的主要优势在于简化函数定义,避免将大量参数罗列在括号内,使代码结构更清晰且易于维护。此外,该机制还有另一层重要用途:

对于单个星号(*):它可以将一系列值存储到一个元组变量中。若需将该元组中的值作为参数传递给另一个被调用的函数,只需在元组变量名前加一个星号即可。调用后的函数便可对这些值执行一系列合法操作。

对于两个星号(**):其原理与上述类似,区别在于变量存储的数据结构为字典。


def foo(*param):
 print(param)
 
def foo_1(**param):
 print(param)
def foo_2(*param1, **param2):
 print(param1)
 print(param2)
 
if __name__ == '__main__':
 foo(1,2,3,4) # (1, 2, 3, 4)
 
 foo_1(a = 1, b=2, c=3, d=4) # {'a': 1, 'b': 2, 'c': 3, 'd': 4}
 
 foo_2(6,7,8, m = 9, n = 10) # (6, 7, 8) {'m': 9, 'n': 10}

Python函数四种传参方式详解

Python中函数传值主要包含四种方式:必选传参(func(param))、默认传参(func(param=value))、可选传参(func(*param))以及关键字传参(func(**param))。

# 必选参数 func(param): # 1、在定义函数时,参数的个数和顺序已经确定。因此,在调用函数时,提供的参数个数、顺序必须与定义完全一致,既不能多也不能少,更不能顺序错乱。因此称为必选参数,这也是最常用的传参方式。


def test(param1,param2,param3):

  print param1,param2,param3

test(1,"hello",True)

test(True,1,"hello")

执行结果:


1 hello True

True 1 hello

# 默认参数 func(param=value): #

1、在定义函数时,若为参数设定了默认值,当调用函数时未传入该参数,函数内部将使用此默认值;若传入了参数,则按必选参数的规则使用传入值。

# 2、如果函数中同时存在必选参数和默认参数,默认参数必须放置在所有必选参数之后。

# 3、若存在多个默认参数,调用时顺序可以不一致,但必须显式指定参数名(例如 param2=100)。不过,建议始终按照函数定义的顺序进行调用,以提高代码可读性。


def test(param1,param2=100,param3=True):

  print param1,param2,param3 test(1)

# 默认参数可以不传 test(1,"hello",False)

# 多个默认参数时,若调用顺序一致 test(1,param3=False,param2="hello")

# 调用顺序也可以不一致

执行结果:


1 100 True

1 hello False

1 hello False

以上关于Python中函数收集参数机制及传参方式的解析即为全部内容,希望能对读者有所帮助,欢迎继续支持相关技术分享。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表