3分钟掌握 Python 中的函数

Python 中的函数

1. 功能介绍

Python 中的函数是执行特定任务或一组任务的代码块。函数接受输入参数、执行操作并返回结果。它们使用关键字定义,后跟函数名称和一对括号。def

def greet(name):
  """This function greets the person passes in a parameter"""
  print(f"Hello, {name}!")

#Calling the function
greet("Alice")


2. 函数参数和返回值

函数可以采用多个参数,也可以返回值。参数是调用函数时将传递给函数的值的占位符。

def add(a, b):
  """This function adds two numbers."""
  return a + b

result = add(3, 5)
print(result)  #Output: 8

在这里,该函数采用两个参数和 ,并返回它们的总和。然后打印结果。addab

函数的基本概念

1. 默认参数

在 Python 中,您可以为参数分配默认值,在调用函数时使其成为可选值。

def power(base, exponent=2)
  """This function calculates the power of a number with a default exponent of 2."""
  return base ** exponent

result1 = power(2)    #Equivalent to power(2, 2)
result2 = power(2, 3)

print(result1)    #Output: 4
print(result2)    #Output: 8

在此示例中,该函数的参数默认值为 。当仅使用参数调用函数时,将使用默认值。power2exponentbase

2. 可变长度参数列表

Python 允许您使用 和 定义可以接受可变数量参数的函数。*args**kwargs

def sum_all(*args):
  """This function calculates the sum of all passed arguments."""
  return sum(args)

result = sum_all(1, 2, 3, 4, 5, 6)
print(result)    #Output: 15

在此示例中,该函数用于接受任意数量的位置参数并计算它们的总和。sum_all*args

3. Lambda 函数(匿名函数

Lambda 函数是使用 关键字定义的小型匿名函数。lambda

multiply = lambda x, y: x * y
result = multiply(3, 4)
print(result)    #Output: 12

lambda 函数采用两个参数并返回它们的乘积。Lambda 函数通常用于短期操作。muliply

函数的实际应用

1. 代码可重用性

函数的主要优点之一是代码的可重用性。通过将一段功能封装到一个函数中,可以轻松地在整个程序中重用它。

def calculate_area(radius):
  """This function calculates the area of circle."""
  return 3.14 * radius**2

# Calculating the area for two circles
area1 = calculate_area(5)
area2 = calculate_area(8)

print(area1)    #Output: 78.5
print(area2)    #Output: 200.96

在此示例中,该函数允许在不复制代码的情况下计算具有不同半径的圆的面积。

2. 抽象和模块化

函数提供了一种抽象复杂操作和增强模块化的方法。将程序分解为更小、更易于管理的功能可使代码库更易于维护。

def process_data(data):
  """This function processess a list of numbers."""
  result = []
  for number in data:
    processed_number = number * 2 + 5
    result.append(processed_number)
  return result

#Using the function
input_data = [1, 2, 3, 4, 5, 6]
ouput_data = process_data(input_data)

print(output_data)    #Output: [7, 9, 11, 13, 15]

在这里,该函数封装了处理数字列表的逻辑,使代码更加模块化且更易于理解。

3. 使用函数进行错误处理

函数可以通过封装可能在块中引发异常的代码来帮助您进行错误处理。try-except

def divide(a, b):
  """This function divides two number and handels division by zero."""
  try:
      result = a / b
      return result
  except ZeroDivisionError:
      print("Error: Cannot divide by zero.")
      return None

#Using th function
result1 = divide(10, 2)
result2 = divide(5, 0)

print(result1)    #Output: 5.0
print(result2)    #Output: None (with an error message)

在此示例中,该函数处理除以零的可能性,从而防止程序崩溃。

编写函数的方法

1. 函数命名

为函数选择有意义且具有描述性的名称。精心选择的名称应传达函数的目的。

# Less descripctive function name
def func1(x, y):
    return x + y

# More descriptive function name
def add_numbers(x, y):
    return x + y

为清楚起见,首选第二个示例,其名称更具描述性。

2. 单一责任原则

遵循单一责任原则,该原则指出一个函数应该有一个明确的功能。如果一个函数执行多个获取,请将其分解为更小的函数。

# Function violating the SIngle Responsibility Principle
def process_data_and_print_results(data):
    """This function processess data and prints the results."""
    processed_data = process_data(data)
    print_results(processed_data)

#Better approach: Separate responsibility
def process_data(data):
    """This function processes data."""
    result = []
    for number in data:
        processed_number = number * 2 + 5
        result.append(processed_number)
    return result

def print_results(data):
    """This function prints the results."""
    for result in data:
        print(result)

将责任分解为单独的功能可增强代码的可读性和可维护性。

3. 文档和注释

提供文档和注释,以解释函数的用途、预期的参数和返回值。

def calculate_area(radius):
    """
    This function calculates the area of a circle.

    Parameters:
    - radius (float): The radius of the circle.

    Returns:
    float: The area of the circle.
    """

    return 3.14 * radius**2