函数是组织良好、可以重复调用、用于完成特定功能的代码块。本篇从函数的定义与调用出发,讲清使用函数的价值、函数分类以及形参与实参。
本篇目录
1. 函数的定义与调用
2. 为什么要使用函数
3. 函数的分类
4. 形参与实参
1. 函数的定义与调用
1.1 定义函数
Python 使用 def 关键字定义函数:
例如:
def greet(name): print(f"你好,{name}!")函数定义由以下部分组成:
即使函数不需要参数,也必须保留括号:
def say_hello(): print("Hello")1.2 调用函数
定义函数不会立即执行函数体。只有使用“函数名 + 括号”调用时,函数体才会执行:
Python 按照从上到下的顺序执行代码,因此函数通常需要先定义,再调用:
def study(): print("开始学习 Python")study()1.3 入门案例
def show_java_plan(name): """输出指定学生的 Java 学习规划。""" print(f"{name} —— Java 学生入学规划:") print("1. 了解个人基础") print("2. 学习 JavaSE") print("3. 学习前端基础") print("4. 学习数据库") print("5. 学习主流框架") print("6. 完成项目实战") print("7. 面试冲刺")show_java_plan("张三")show_java_plan("王五")同一个函数传入不同的姓名,就能处理不同学生,函数体不需要重复编写。
2. 为什么要使用函数
函数的核心思想是:把相对独立、可能重复使用的逻辑封装起来,并通过参数接收变化的数据。
使用函数主要有以下好处:
1. 提高复用性:一次定义,可以多次调用。
2. 降低重复:相同逻辑不需要复制多份。
3. 方便维护:需求变化时,只修改函数内部即可。
4. 结构清晰:把复杂程序拆分成多个职责明确的小模块。
5. 便于测试:可以单独验证每个函数的输入和输出。
可以把函数理解成一台机器:
参数(输入) → 函数体(处理) → 返回值(输出)参数和返回值都不是必需的,一个函数可以:
• 没有参数,也没有显式返回值;
• 有参数,但没有显式返回值;
• 没有参数,但有返回值;
• 既有参数,也有返回值。
3. 函数的分类
3.1 内置函数
内置函数由 Python 直接提供,不需要导入模块就可以调用。
# 输入与输出print("Hello")name = input("请输入姓名:")# 类型转换age = int("18")price = float("3.14")text = str(100)numbers = list((1, 2, 3))# 序列与数值处理length = len([1, 2, 3])maximum = max(1, 5, 3)minimum = min(1, 5, 3)total = sum([1, 2, 3])numbers_range = range(5)常用内置函数包括 print()、input()、len()、type()、int()、str()、max()、min() 和 sum() 等。
3.2 模块提供的函数
标准库或第三方库中的函数,需要先导入才能使用。
使用标准库:
import randomnumber = random.randint(1, 10)print(number)也可以只导入某个函数:
from random import randintprint(randint(1, 10))使用第三方库前,一般需要先安装:
import numpy as nparray = np.array([1, 2, 3])print(array.mean())3.3 自定义函数
自定义函数是程序员根据业务需求,使用 def 编写的函数。函数的名称、参数、逻辑和返回值都由开发者决定。
def calculate_area(width, height): return width * height
4. 形参与实参
4.1 基本概念
• 形参(形式参数):定义函数时,写在括号中的变量,相当于等待接收数据的占位符。
• 实参(实际参数):调用函数时,真正传入的值。
def add(a, b): # a、b 是形参 return a + bresult = add(10, 20) # 10、20 是实参print(result)形参通常只在函数内部有效。函数每调用一次,形参都会接收本次调用传入的实参。
4.2 Python 参数不固定类型
Python 是动态类型语言。形参本身不会限制实参类型,真正能否运行取决于函数内部操作是否支持该类型。
def add(a, b): print(type(a), type(b)) return a + bprint(add(1, 2)) # 3print(add(1.5, 2.5)) # 4.0print(add("hello", "world")) # helloworld如果传入不兼容的类型,函数会在执行相应操作时出错:
# 运行到 1 + "2" 时抛出 TypeError# print(add(1, "2"))