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