【Python基础009】位置参数和关键字参数及*arg,**kwargs的用法

一、简介

        在Python中,函数定义时可以指定参数的位置和关键字。位置参数和关键字参数是两种不同类型的参数,它们在定义和使用时有所不同。

        1、位置参数(Positional Arguments)

        在函数定义时按照顺序指定的参数,必须在调用函数时提供相应的值。位置参数在函数内部按照顺序进行访问。例如:

def greet(name, age):

    print(f"Hello, my name is {name} and I am {age} years old.")


greet("Alice", 25) # 输出:Hello, my name is Alice and I am 25 years old.

        在上面的例子中,name和age是位置参数,它们必须在调用greet函数时按照顺序提供相应的值。

        2、关键字参数(Keyword Arguments)

        在函数定义时使用参数名作为键,指定一个默认值或表达式。在调用函数时,必须使用参数名作为键,提供相应的值。关键字参数在函数内部按照参数名进行访问。例如:

def greet(name, age):

    print(f"Hello, my name is {name} and I am {age} years old.")


greet(age=25, name="Alice") # 输出:Hello, my name is Alice and I am 25 years old.

        在上面的例子中,name和age是关键字参数,它们在函数定义时指定了默认值或表达式。在调用greet函数时,必须使用参数名作为键,提供相应的值。关键字参数的顺序不重要,但是必须提供所有必需的关键字参数。

二、区别

        位置参数按照顺序指定参数,必须在调用函数时提供相应的值;而关键字参数使用参数名作为键指定默认值或表达式,调用函数时必须使用参数名作为键提供相应的值。

三、*arg和**kwargs

        在Python中,*arg和**kwargs是两种特殊的参数传递方式,用于处理可变数量的参数。

        1、 * arg

        这种格式允许你将任意数量的位置参数传递给函数,并将它们收集到一个元组中。你可以在参数名前加上一个星号 *来表示它是一个可变位置参数。例如:

def func(*args):

    for arg in args:

        print(arg)


func(1, 2, 3) # 输出:1 2 3

func(4, 5, 6, 7) # 输出:4 5 6 7

        在上面的例子中,*args用于收集传递给函数的所有位置参数,并将它们存储在一个元组中。你可以在函数内部使用args来访问这些参数。

        2. ** kwargs

        这种格式允许你将 任意数量的关键字参数传递给函数,并将它们收集到一个字典中。你可以在参数名前加上两个星号 **来表示它是一个可变关键字参数。例如:

def func(**kwargs):

    for key, value in kwargs.items():

        print(f"{key} = {value}")


func(name="Alice", age=25) # 输出:name = Alice age = 25

func(city="New York", country="USA", height=1.75) # 输出:city = New York country = USA height = 1.75

        在上面的例子中,**kwargs用于收集传递给函数的所有关键字参数,并将它们存储在一个字典中。你可以在函数内部使用kwargs来访问这些参数。

        这两种格式通常用于编写更加灵活和可扩展的函数,特别是当你不知道将要传递多少参数时。通过使用*arg和**kwargs,你可以轻松地处理任意数量的位置和关键字参数,并在函数内部使用它们。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值