跳到主要内容

Python函数参数传递

函数参数传递是Python函数定义和调用中的一个重要概念。让我们详细介绍一下位置参数、关键字参数、默认参数和可变参数(*args**kwargs)。

1. 位置参数(Positional Arguments)

位置参数是最常见的参数类型,按照位置顺序传递给函数。

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

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

2. 关键字参数(Keyword Arguments)

关键字参数在函数调用时使用参数名进行传递,这样可以不考虑参数的顺序。

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

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

3. 默认参数(Default Arguments)

在函数定义时可以为参数提供默认值,如果调用函数时没有传递该参数,则使用默认值。

def greet(name, age=25):
print(f"Hello, my name is {name} and I am {age} years old.")

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

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

4. 可变参数

4.1 *args(Non-keyword Variable-length Arguments)

*args 用来接收任意数量的位置参数,返回一个元组。

def greet(*args):
for arg in args:
print(f"Hello, {arg}!")

greet("Alice", "Bob", "Charlie")
# 输出:
# Hello, Alice!
# Hello, Bob!
# Hello, Charlie!

4.2 **kwargs(Keyword Variable-length Arguments)

**kwargs 用来接收任意数量的关键字参数,返回一个字典。

def greet(**kwargs):
for key, value in kwargs.items():
print(f"{key} is {value} years old.")

greet(Alice=25, Bob=30, Charlie=35)
# 输出:
# Alice is 25 years old.
# Bob is 30 years old.
# Charlie is 35 years old.

综合使用

你可以在一个函数中同时使用位置参数、关键字参数、默认参数和可变参数,但要注意参数的顺序:位置参数、默认参数、*args**kwargs

def greet(greeting, *args, **kwargs):
print(greeting)
for arg in args:
print(f"Hello, {arg}!")
for key, value in kwargs.items():
print(f"{key} is {value} years old.")

greet("Welcome!", "Alice", "Bob", Charlie=35, Dave=40)
# 输出:
# Welcome!
# Hello, Alice!
# Hello, Bob!
# Charlie is 35 years old.
# Dave is 40 years old.