什么是函数参数?
在 Python 中,函数参数是*传递*给函数的*数据*。这些数据可以是数字、字符串、列表、字典等任何 Python 对象
函数参数的种类
1. 位置参数 (positional arguments)
- 按照定义的顺序依次传递。
- 必须按照正确的顺序传递。
def greet(name, age):
print(f"Hello, {name}! You are {age} years old.")
greet("Alice", 30)
#在使用函数并输入参数时,直接给值的话 就要按照定义的顺序
2. 关键字参数 (keyword arguments)
- 使用参数名称传递值,顺序可以任意。
- 可以为参数提供预设值。
def greet(name, greeting="Hello"):
print(f"{greeting}, {name}!")
greet(name="Bob", greeting="Hi")
#如果在使用函数并使用name和greeting来赋值,顺序就可以任意
3. 预设参数 (default arguments)
- 在函数定义时为参数提供一个预设值。
- 如果调用函数时没有为该参数传值,则使用预设值。
def power(base, exponent=2):
return base ** exponent
power(3)
#9
power(3,4)
#81
power(3)如果只输入一个值,就会带到第一个参数basepower(3,3)如果只输入2个值,第一个值就会带到第一个参数,第2个值就会带到第2个参数
4. 可变长度参数
*args: 收集任意数量的位置参数,以元组形式传递。**kwargs: 收集任意数量的关键字参数,以字典形式传递。
def my_function(*args, **kwargs):
print(args)
print(kwargs)
参数组合使用
- 位置参数必须在关键字参数之前。
- *args 必须在关键字参数之前。
- **kwargs 必须在所有其他参数之后。
def my_function(a, b=2, *args, **kwargs):
# ...
为什么使用不同的参数类型?
- 位置参数: 简单直观,适合参数顺序固定的情况。
- 关键字参数: 提高可读性,允许任意顺序传递参数,可以提供预设值。
- *args 和 **kwargs: 提供灵活性,可以处理任意数量的参数。
注意事项
- 预设值只赋值一次。
- 可变对象作为预设值时要注意,因为多次调用会修改同一个对象。
- *args 和 **kwargs可以一起使用,但顺序不能错。
小结
函数参数是函数的重要组成部分。不同的参数类型提供了不同的功能和灵活性。根据实际需求选择合适的参数类型。
def create_user(name, age, city="Taipei", **kwargs):
user = {"name": name, "age": age, "city": city}
for key, value in kwargs.items():
user[key] = value
return user
user = create_user("Alice", 30, email="alice@example.com")
print(user)
这个范例展示了如何组合使用不同的参数类型,以实现一个功能更强大的函数。
总结
通过对 Python 函数参数的深入了解,我们可以写出更加灵活、可读性更高的代码。合理地使用位置参数、关键字参数、预设参数、*args 和 kwargs,可以大大提高我们的编程效率。