Python基础 - 函数的位置参数、关键字参数、默认参数

liftword2个月前 (03-17)技术文章7

在 Python 中,调用函数可以按照函数的位置传递参数(位置参数),也可以按照参数的名称传递参数(关键字参数),函数的参数还可以在定义的时候指定默认值(默认参数)。

此外,Python 还支持可变参数,包括可变位置参数(*args)和可变关键字参数(**kwargs)。

位置参数

调用函数时,传入的值会按顺序依次赋值给对应的参数。

示例如下:

def show_info(name: str, age: int, score: int):
    print(f'name:{name}, age:{age}, score:{score}')
    
# 输出: name:张三, age:18, score:100
show_info('张三', 18, 100)

在上面的示例中,show_info() 有三个参数,调用 show_info('张三', 18, 100) 时根据顺序,依次将 '张三'、18、100 传递给name、age和score。

关键字参数

调用函数时,指定参数名和对应的值,形式为“参数名=参数值”,顺序不重要。

示例如下:

def show_info(name: str, age: int, score: int):
    print(f'name:{name}, age:{age}, score:{score}')

# 输出: name:张三, age:18, score:100
show_info(score=100, age=18, name='张三')

混合使用位置参数和关键字参数

可以同时使用位置参数和关键字参数,需要注意以下几点:

  • 调用函数时,位置参数必须出现在关键字参数之前,否则就会出错。
  • 调用函数时,每个参数只能指定一次,不能既通过位置参数指定,又通过关键字参数指定。

示例如下:

def show_info(name: str, age: int, score: int):
    print(f'name:{name}, age:{age}, score:{score}')

# 以下几种用法是等价的,都是输出: name:张三, age:18, score:100
show_info('张三', age=18, score=100)
show_info('张三', score=100, age=18)
show_info('张三', 18, score=100)
show_info('张三', 18, 100)

# 以下用法是错误的
# show_info(age=18, score=100, '张三')
# show_info('张三', name='张三')

默认参数

定义函数的时候,可以指定参数的默认值,如果调用函数时,没有给该参数传值,会使用默认值。

需要注意的是,默认参数必须在非默认参数的后面。

示例如下:

# age的默认值为18, score的默认值为0
def show_info_with_default(name: str, age: int = 18, score: int = 0):
    print(f'name:{name}, age:{age}, score:{score}')
    
# 输出: name:张三, age:18, score:0
show_info_with_default('张三')

可变参数

如果函数接收的参数是不确定的,可以使用可变参数,包括可变位置参数(*args)和可变关键字参数(**kwargs)。

  • *args 用于接收任意数量的位置参数,存储为元组。
  • **kwargs 用于接收任意数量的关键字参数,存储为字典。

示例如下:

def func(*args, **kwargs):
    print(f'可变位置参数:{args}, 可变关键字参数:{kwargs}')

# 输出: 可变位置参数:('张三',), 可变关键字参数:{'age': 18, 'score': 100}
func('张三', age=18, score=100)

# 输出: 可变位置参数:('张三', 18), 可变关键字参数:{'score': 100}
func('张三', 18, score=100)

总结

合理使用默认参数可以简化函数的调用。

必选参数建议使用位置参数,可选参数建议使用默认参数。

相关文章

Python 函数参数

1.函数基本参数#基本样例 函数参数的定义要和调用参数匹配,否则会报错 def fun01(a, b): print(a, b) if __name__ == '__main__':...

python之函数的参数详解

参数传递:1.不可变数据类型:数字number(含int、float、bool、complex)、字符串string、元组tuple。当不可变数据类型被当作函数的参数,传递的是值,函数体内改变值时实际...

真相!Python 默认值参数深度解析,从踩坑到精通的进阶秘籍

一、开发中遇到的问题问题 1:默认值参数为可变对象的陷阱在 Python 开发里,不少初学者会在默认值参数为可变对象时踩坑。比如,我们想定义一个函数,用于向列表中添加元素,代码如下:def add_t...

Python 函数之参数

定义一个函数非常简单,但是怎么定义一个函数,需要什么参数,怎么去调用却是我们需要去思考的问题。如同大多数语言一样(如 Java),Python 也提供了多种参数的设定(如:默认值参数、关键字参数、形参...

【Python程序开发系列】一文总结Python函数参数和传递方式

这是我的第217篇原创文章。一、引言函数,在定义的时候,可以有参数的,也可以没有参数。从函数定义的角度来看,参数可以分为两种:必选参数:调用函数时必须要指定的参数,在定义时没有等号可选参数:也叫默认参...