面向所有人的Python编程——函数

部署运行你感兴趣的模型镜像

🎯 函数的核心理念:存储与重用

📌 核心原则:DRY(Don't Repeat Yourself)

  • 避免重复:相同的代码只写一次,多次使用

  • 提高效率:减少代码量,便于维护和更新

  • 增强可读性:将复杂逻辑封装为有意义的名称

🔧 函数的基本概念

📖 函数定义

python

def function_name(parameters):
    """文档字符串(可选,但推荐)"""
    # 函数体代码
    return result  # 可选,没有return则返回None

🎮 函数调用过程

  1. 定义阶段:告诉Python记住这个函数,但不执行

  2. 调用阶段:执行函数体中的代码

  3. 返回阶段:回到调用处继续执行后续代码

python

def greet():           # 1. 定义函数(不执行)
    print("Hello!")
    
greet()               # 2. 调用函数(执行)
print("World")        # 3. 继续执行
# 输出: Hello! World

🔄 函数执行流程

📍 调用堆栈可视化

text

主程序执行 → 遇到函数调用 → 暂停主程序
          ↓
    进入函数执行 → 执行函数体代码
          ↓
    函数返回 → 回到主程序暂停处
          ↓
    继续执行主程序

💡 关键理解

函数调用就像是暂时暂停当前操作,等待函数返回一个值来替换调用位置

📚 内置函数(Built-in Functions)

🛠️ 常用内置函数示例

函数描述示例
print()输出内容print("Hello")
input()获取用户输入name = input("Name? ")
len()获取长度len("Hello") → 5
type()获取类型type(42) → <class 'int'>
int()转换为整数int("42") → 42
float()转换为浮点数float("3.14") → 3.14
str()转换为字符串str(100) → '100'
max()返回最大值max(1, 5, 3) → 5
min()返回最小值min(1, 5, 3) → 1
sum()求和sum([1, 2, 3]) → 6
sorted()排序sorted([3, 1, 2]) → [1, 2, 3]
range()生成序列list(range(3)) → [0, 1, 2]

🎨 函数输入-处理-输出模型

text

输入(参数) → 函数(处理) → 输出(返回值)

🎪 自定义函数

📝 定义与调用示例

python

# 定义函数
def greet(name):                # name是参数
    """向指定的人问好"""
    print(f"Hello, {name}!")

# 调用函数
greet("Alice")                  # "Alice"是参数值
greet("Bob")                    # "Bob"是参数值

# 输出:
# Hello, Alice!
# Hello, Bob!

🔍 参数 vs 参数值

术语定义位置示例
参数(Parameter)函数定义时接收输入的变量函数定义括号内def func(param):
参数值(Argument)调用函数时传入的具体值函数调用括号内func(value)

🍰 类比理解

参数:像是咖啡机的咖啡粉槽(等待接收)
参数值:像是实际放入的咖啡粉(具体内容)

📤 返回值(Return Value)

🔄 返回值的作用

  1. 停止函数执行:遇到return立即结束函数

  2. 传递结果:将计算结果返回给调用者

python

def add(a, b):
    """计算两个数的和"""
    result = a + b
    return result  # 1. 停止函数 2. 返回result的值

# 调用并接收返回值
sum_result = add(3, 5)  # add(3, 5) 被替换为 8
print(sum_result)       # 输出: 8

📊 返回值流程

python

def double(x):
    return x * 2

# 调用过程:
# 1. 执行 double(5)
# 2. double函数返回 10
# 3. 10 替换掉 double(5)
# 4. y 被赋值为 10
y = double(5)

⚪ 无返回值函数

📭 None类型

  • 无return语句:函数默认返回None

  • 有return无值returnreturn None

  • 作用:执行操作但不返回具体结果

python

# 无返回值函数(执行操作)
def print_welcome(name):
    print(f"Welcome, {name}!")
    # 隐式返回 None

# 有返回值函数(计算结果)
def calculate_total(price, quantity):
    total = price * quantity
    return total  # 返回计算结果

# 使用示例
print_welcome("Alice")  # 只执行操作,不接收返回值
result = calculate_total(10, 3)  # 接收返回值
print(f"Total: ${result}")

🏗️ 函数设计实践

1. 带参数和返回值的函数

python

def calculate_area(width, height):
    """计算矩形面积"""
    area = width * height
    return area

# 使用
room_area = calculate_area(5, 4)
print(f"房间面积: {room_area}平方米")

2. 多语言问候函数

python

def greet(lang):
    """根据语言返回问候语"""
    if lang == 'es':        # 西班牙语
        return 'Hola'
    elif lang == 'fr':      # 法语
        return 'Bonjour'
    elif lang == 'cn':      # 中文
        return '你好'
    else:                   # 默认英语
        return 'Hello'

# 使用
print(greet('es'))  # Hola
print(greet('fr'))  # Bonjour
print(greet('en'))  # Hello

3. 组合多个函数

python

def get_rectangle_area(width, height):
    """计算矩形面积"""
    return width * height

def get_triangle_area(base, height):
    """计算三角形面积"""
    return 0.5 * base * height

def calculate_total_area():
    """计算房间总面积(矩形+三角形)"""
    rect_area = get_rectangle_area(10, 5)
    tri_area = get_triangle_area(4, 3)
    total = rect_area + tri_area
    return total

print(f"总面积: {calculate_total_area()}平方米")

🎨 为什么要使用函数?

✅ 主要优点

  1. 模块化组织

    python

    # 将代码组织成逻辑"段落"
    def process_data(data):
        """数据处理函数"""
        cleaned = clean_data(data)
        analyzed = analyze_data(cleaned)
        return generate_report(analyzed)
  2. 避免重复

    python

    # 重复代码(不好)
    print("=" * 50)
    print("报告标题")
    print("=" * 50)
    # ... 很多代码 ...
    print("=" * 50)
    print("报告结尾")
    print("=" * 50)
    
    # 使用函数(好)
    def print_separator():
        print("=" * 50)
    
    print_separator()
    print("报告标题")
    print_separator()
  3. 简化复杂代码

    python

    # 复杂逻辑拆分为小函数
    def validate_user_input(input_data):
        """验证用户输入"""
        if not check_format(input_data):
            return False
        if not check_length(input_data):
            return False
        if not check_content(input_data):
            return False
        return True
  4. 创建可重用库

    python

    # my_utils.py - 可以分享给其他人
    def format_currency(amount):
        """格式化货币显示"""
        return f"${amount:,.2f}"
    
    def calculate_tax(price, tax_rate):
        """计算税额"""
        return price * tax_rate
    
    def generate_invoice(items, tax_rate=0.08):
        """生成发票"""
        # 使用上面的函数
        pass

📋 函数使用指南

场景建议示例
重复代码提取为函数多处相同的计算逻辑
复杂逻辑拆分为多个小函数数据处理流程
特定功能创建专用函数数据验证、格式化
团队协作建立函数库共享工具函数

🐛 常见错误与调试

1. 忘记冒号

python

# 错误
def say_hello()  # 缺少冒号
    print("Hello")

# 正确
def say_hello():  # 有冒号
    print("Hello")

2. 缩进错误

python

# 错误:混用空格和Tab
def my_func():
    print("第一行")   # 4个空格
    print("第二行")   # 1个Tab(不同编辑器可能不同)

# 正确:统一使用4个空格
def my_func():
    print("第一行")   # 4个空格
    print("第二行")   # 4个空格

3. 参数不匹配

python

# 定义
def greet(name, age):
    print(f"{name} is {age} years old")

# 错误调用:缺少参数
greet("Alice")  # TypeError: missing 1 required argument

# 正确调用
greet("Alice", 25)

4. 返回值使用错误

python

# 无返回值函数
def print_sum(a, b):
    print(a + b)
    # 没有return语句

# 错误:试图使用返回值
result = print_sum(3, 5)  # result是None
print(result * 2)         # TypeError: 不能将None与数字相乘

💎 核心要点总结

1. 函数三要素

  • 名称:描述函数功能

  • 参数:接收输入数据

  • 返回值:输出处理结果

2. 定义与调用

  • 定义:使用def关键字,只定义不执行

  • 调用:使用函数名加括号,传入参数值

3. 返回值机制

  • 有返回值:使用return返回具体结果

  • 无返回值:默认返回None,用于执行操作

4. 设计原则

  • 单一职责:一个函数只做一件事

  • 明确命名:函数名应清晰表达功能

  • 良好注释:使用文档字符串说明用途

编程思维:函数是编程中的基本构建块。就像乐高积木一样,将小块的、专门的功能组合起来,可以构建出复杂而强大的程序。学会设计好的函数,是成为高效程序员的关键一步!

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值