函数是一组可以被重复使用的代码片段,用于执行特定任务。通过将代码封装到函数中,可以提高代码的可读性和可维护性。
类比:
- 烹饪食谱:一本食谱中的每个食谱就是一个“函数”,可以按照它的步骤做出特定的菜。
- 工厂中的机器:每台机器(函数)执行一种特定的任务(加工某种零件)。
函数的定义
Python 中的函数通过 def
关键字定义,并可以有参数和返回值。
结构:
def 函数名(参数1, 参数2, ...): 函数体 return 返回值
函数可以接收参数,这些参数可以是位置参数、关键字参数、默认参数等。
位置参数
# 使用位置参数 def greet(name, message): print(f"{message}, {name}") greet("Alice", "你好") # 输出: 你好, Alice
这里我们定义了一个 greet
函数,接收两个位置参数 name
和 message
,并打印出问候语,位置参数按顺序传递给函数。
关键字参数
# 使用关键字参数 greet(message="早上好", name="Bob") # 输出: 早上好, Bob
此外我们还可以使用关键字参数,通过参数名传递参数,顺序可以不同,比如这里我们先传递 message
参数,再传递 name
参数。
默认参数
# 使用默认参数 def greet(name, message="你好"): print(f"{message}, {name}") greet("Charlie") # 输出: 你好, Charlie
同样在定义函数时,我们可以为参数设置默认值,这样在调用函数时如果没有提供参数,会使用默认值。比如这里我们定义的 greet
函数中 message
参数有默认值 "你好",当调用函数时没有提供 message
参数时,会使用默认值。
函数的返回值
函数可以返回一个或多个值,返回值用于传递函数执行结果。
# 返回多个值 def divide(a, b): quotient = a // b remainder = a % b return quotient, remainder q, r = divide(10, 3) print(f"商: {q}, 余数: {r}") # 输出: 商: 3, 余数: 1
这里我们定义的 divide
函数同时返回商和余数两个值,可以同时接收多个返回值,我们可以使用逗号分隔多个变量来接收这些返回值,这也叫做元组解包。
函数的嵌套与递归
函数可以嵌套定义或调用自身(递归)来解决复杂问题。
嵌套函数
# 嵌套函数 def outer_function(text): def inner_function(): print(text) inner_function() outer_function("Hello from the inside!") # 输出: Hello from the inside!
这里我们定义的 inner_function
是 outer_function
内部定义的嵌套函数,能访问外部函数的变量。
递归函数
递归函数是指调用自身的函数,通常用于解决可以分解为相同问题的问题。
# 计算阶乘的递归函数,阶乘是指从 1 到 n 的所有整数的乘积 def factorial(n): if n == 0: return 1 else: return n * factorial(n - 1) result = factorial(5) print(f"5 的阶乘是: {result}") # 输出: 5 的阶乘是: 120
这里我们定义的 factorial
函数调用自身来计算阶乘,通过递归实现,需要注意递归函数需要有终止条件,否则会导致无限递归。
函数的实际应用
函数可以用于各种场景,如计算、数据处理、用户交互等。
计算圆的面积
# 计算圆的面积 import math def circle_area(radius): return math.pi * (radius ** 2) area = circle_area(5) print(f"半径为 5 的圆的面积是: {area:.2f}")
这里我们定义的 circle_area
函数接收圆的半径,返回计算得出的面积。
生成斐波那契数列
斐波那契数列是指这样一个数列:1,1,2,3,5,8,13,21,34,55,89...这个数列从第 3 项开始 ,每一项都等于前两项之和。
# 生成斐波那契数列 def fibonacci(n): sequence = [0, 1] while len(sequence) < n: sequence.append(sequence[-1] + sequence[-2]) return sequence fib_sequence = fibonacci(10) print(f"前 10 个斐波那契数: {fib_sequence}")
定义的 fibonacci
函数生成前 n
个斐波那契数,并返回数列。
简单的计算器
下面我们通过一个简单的计算器示例来演示如何使用函数来实现一个简单的交互式计算器。
# 简单的计算器 def add(a, b): return a + b def subtract(a, b): return a - b def multiply(a, b): return a * b def divide(a, b): if b == 0: return "不能除以零" return a / b def calculator(): operation = input("请输入操作(加/减/乘/除): ") num1 = float(input("请输入第一个数: ")) num2 = float(input("请输入第二个数: ")) if operation == "加": result = add(num1, num2) elif operation == "减": result = subtract(num1, num2) elif operation == "乘": result = multiply(num1, num2) elif operation == "除": result = divide(num1, num2) else: return "无效的操作" return f"结果是: {result}" print(calculator())
这里我们通过 calculator
函数提供了一个简单的交互式计算器,用户可以选择操作并输入数字来得到计算结果。
函数是编程中非常重要的一部分,几乎无处不在,可以帮助我们将代码模块化、重用和组织,提高代码的可读性和可维护性,希望大家能够通过这些例子和实际应用,更好的理解函数的概念和用法。