什么是函数参数?

在 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,可以大大提高我们的编程效率。