上一篇
Python函数参数传递完全指南 - 掌握5种参数传递方式
- Python
- 2025-08-08
- 1944
Python函数参数传递完全指南
掌握位置参数、关键字参数、默认参数、可变参数(*args, **kwargs)等5种参数传递方式
Python参数传递基础
在Python中,函数参数的传递方式决定了如何将数据传递给函数。理解不同的参数传递方式能让你编写更灵活、可读性更强的代码。
位置参数
最常见的参数传递方式,参数按顺序依次传递
关键字参数
通过参数名指定值,提高代码可读性
默认参数
为参数提供默认值,调用时可省略
位置参数
位置参数是最基本的参数传递方式,按照函数定义时参数的顺序传递值。
示例代码
def greet(name, greeting): print(f"{greeting}, {name}!") # 使用位置参数调用 greet("Alice", "Hello") # 输出: Hello, Alice! greet("Bob", "Hi") # 输出: Hi, Bob!
注意事项
- 参数顺序必须与函数定义一致
- 参数数量必须匹配
- 位置参数必须放在关键字参数前面
关键字参数
关键字参数通过参数名指定值,使代码更易读,且不必记住参数顺序。
示例代码
def describe_pet(animal_type, pet_name): print(f"I have a {animal_type} named {pet_name}.") # 使用关键字参数调用 describe_pet(animal_type="hamster", pet_name="Harry") describe_pet(pet_name="Whiskers", animal_type="cat")
优点
- 提高代码可读性
- 不必记住参数顺序
- 避免位置错误
限制
- 关键字参数必须在位置参数之后
- 参数名必须准确匹配
默认参数
默认参数允许为函数参数提供默认值,调用时可省略这些参数。
示例代码
def make_shirt(size="large", message="I love Python"): print(f"制作一件{size}号T恤,印有: '{message}'") # 使用默认参数 make_shirt() # 使用所有默认值 make_shirt(size="medium") # 修改size,message使用默认值 make_shirt("small", "Hello World!") # 位置参数
重要原则
- 默认参数必须放在非默认参数之后
- 默认值在函数定义时计算一次(注意可变对象的问题)
- 默认参数使函数调用更简洁
可变参数 (*args 和 **kwargs)
当不确定要传递多少参数时,可以使用可变参数。
*args - 可变位置参数
收集所有位置参数到一个元组
def sum_numbers(*args): total = 0 for num in args: total += num return total print(sum_numbers(1, 2, 3)) # 输出: 6 print(sum_numbers(4, 5, 6, 7)) # 输出: 22
**kwargs - 可变关键字参数
收集所有关键字参数到一个字典
def build_profile(**kwargs): profile = {} for key, value in kwargs.items(): profile[key] = value return profile user = build_profile(name="Alice", age=30, occupation="Engineer") print(user) # 输出: {'name': 'Alice', 'age': 30, 'occupation': 'Engineer'}
组合使用规则
在函数定义中,参数顺序必须遵循:
- 位置参数
- 默认参数
- *args
- 关键字参数
- **kwargs
def complex_function(a, b=2, *args, c=3, **kwargs): print(f"a={a}, b={b}, c={c}") print(f"args: {args}") print(f"kwargs: {kwargs}") complex_function(1, 4, 5, 6, c=7, d=8, e=9)
参数传递机制
Python中的参数传递既不是值传递也不是引用传递,而是"对象引用传递"。
不可变对象
数字、字符串、元组等不可变对象在函数内修改会创建新对象
def modify_number(x): x = x + 10 print("函数内:", x) num = 5 modify_number(num) print("函数外:", num) # 输出: 5 (未改变)
可变对象
列表、字典等可变对象在函数内修改会影响原始对象
def modify_list(lst): lst.append(4) print("函数内:", lst) my_list = [1, 2, 3] modify_list(my_list) print("函数外:", my_list) # 输出: [1, 2, 3, 4] (已改变)
掌握Python参数传递
灵活运用位置参数、关键字参数、默认参数和可变参数,将使你的Python函数更加强大和灵活。
开始编写更强大的Python函数
本文由GaoNang于2025-08-08发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://521pj.cn/20257598.html
发表评论