Python Tutorials

精通Python函数参数

Spread the love

函数是编写模块化和可重用Python代码的基石。本教程深入探讨了函数参数的复杂性,使您能够编写更简洁、更高效且更不易出错的程序。

目录

位置参数

位置参数是最简单的形式。它们按照定义的顺序传递给函数。顺序严格强制执行;在函数调用期间参数顺序不匹配将导致结果不正确或出错。


def greet(name, greeting):
  print(f"{greeting}, {name}!")

greet("Alice", "Hello")  # 正确的顺序
greet("Hello", "Alice")  # 错误的顺序 - 将打印 "Alice, Hello!"

关键字参数

关键字参数允许您在调用函数时指定参数名称。这使您的代码更易读且更不易出错,尤其是在处理具有许多参数的函数时。关键字参数的顺序无关紧要。


def describe_pet(animal_type, pet_name, age=None):
  print(f"n我有一只 {animal_type}。")
  print(f"我的 {animal_type} 的名字是 {pet_name.title()}。")
  if age:
    print(f"我的 {animal_type} {age} 岁了。")

describe_pet(animal_type='hamster', pet_name='harry')
describe_pet(pet_name='willie', animal_type='dog', age=5)

默认参数

默认参数为函数参数提供备用值。如果在调用函数时未提供值,则使用默认值。默认参数应始终放在函数定义中非默认参数之后。


def power(base, exponent=2):
  return base ** exponent

print(power(3))      # 输出:9 (exponent 默认值为 2)
print(power(3, 3))  # 输出:27

可变数量的参数 (*args 和 **kwargs)

*args**kwargs 语法允许您分别处理可变数量的位置参数和关键字参数。*args 将位置参数收集到一个元组中,而 **kwargs 将关键字参数收集到一个字典中。


def my_function(*args, **kwargs):
    print("位置参数:", args)
    print("关键字参数:", kwargs)

my_function(1, 2, 3, name="Alice", age=30)

可变参数与不可变参数

在使用函数参数时,理解可变性至关重要。不可变对象(如数字、字符串、元组)不能在函数内更改;任何更改都会创建一个新对象。可变对象(如列表、字典)可以在原地修改,从而影响函数外部的原始对象。如果处理不当,这可能会导致意外的副作用。


def modify_list(my_list):
  my_list.append(4)  # 修改原始列表

my_list = [1, 2, 3]
modify_list(my_list)
print(my_list)  # 输出:[1, 2, 3, 4](原始列表已修改)


def modify_string(my_string):
    my_string += "!!!"  # 创建一个新的字符串

my_string = "Hello"
modify_string(my_string)
print(my_string)  # 输出:Hello(原始字符串未更改)

本综合指南为在 Python 中使用函数参数提供了坚实的基础。掌握这些概念将显著提高代码的质量和可维护性。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注