欢迎访问宙启技术站
智能推送

Python中的函数参数和默认值详解

发布时间:2023-06-25 13:07:10

在Python中,函数参数的类型分为位置参数、关键字参数、默认参数和可变参数。其中,默认参数是指在函数定义时给参数设置默认值,这个默认值在函数调用时可以被覆盖或不传入。

定义默认参数的格式为: def func(a, b=10):,其中b=10就是默认值,如果不传入b,则默认为10。

在调用函数时,函数的参数可以是位置参数或关键字参数,位置参数是按照参数位置传递的,关键字参数是按照参数名传递的。

例如:

def greet(name, msg="Good morning!"):
    """
    This function greets to the person with the provided message.

    If message is not provided, it defaults to "Good morning!"

    """
    print("Hello",name + ', ' + msg)

# calling function
greet("Kate")
greet("Bruce","How do you do?")

函数greet()接收两个参数,其中msg参数有默认值,可以在调用函数时覆盖默认值,如greet("Bruce","How do you do?")。

在函数定义时,要注意默认参数的位置,严格遵循从左到右的顺序,如下所示:

def func(a, b=10, c):   #SyntaxError: non-default argument follows default argument
    pass

以上代码在Python中会抛出语法错误,因为非默认参数a在默认参数b后面。

除此之外,Python中还支持可变参数的定义,包括不定长位置参数和不定长关键字参数。

不定长位置参数用“*”来表示,在函数定义时将所有位置参数放入一个元组中,是可以被迭代的。例如:

def myFunc(*args):
    for arg in args:
        print(arg)

myFunc('Hello', 'Welcome', 'to', 'GeeksforGeeks')

输出结果为:

welcome
to
GeeksforGeeks

不定长关键字参数用“**”来表示,在函数定义时将所有关键字参数放入一个字典中,可以迭代获取键和值。例如:

def myFunc(**kwargs):
    for key, value in kwargs.items():
        print(key, value)

myFunc(first='Geeks', mid='for', last='Geeks')

输出结果为:

mid for
last Geeks

需要注意的是,不定长参数必须放在普通参数后面,否则会抛出语法错误。如:

def myFun(arg1, *args, **kwargs):
    pass

在Python中,调用函数时可以混合使用位置参数、关键字参数、默认参数和可变参数。例如:

def myFunc(a, b, c=10, *args, **kwargs):
    print("a =", a)
    print("b =", b)
    print("c =", c)

    for arg in args:
        print("arg :", arg)

    for key, value in kwargs.items():
        print("key =", key, " value =", value)

# Now we can call myFun()  
myFunc(1, 2, 3, 4, 5, 6, 7, first="Geeks", mid="for", last="Geeks")

输出结果为:

b = 2
c = 3
arg : 4
arg : 5
arg : 6
arg : 7
key = first  value = Geeks
key = mid  value = for
key = last  value = Geeks

在Python中,函数参数的使用非常灵活,可以根据具体情况选择不同的参数类型,对于函数的参数使用需要充分理解其特点和使用方法。