函数定义与模块化编程

一、函数定义基础

1. 函数结构

def 函数名(参数列表):
    """文档字符串(可选)"""
    函数体
    return 返回值  # 可选
  • def关键字:函数声明的起始标识
  • 命名规范:推荐使用下划线命名法(如calculate_average
  • 文档字符串:通过函数名.__doc__可查看说明文档

2. 参数类型详解

  • 位置参数:必须按顺序传递
  def power(base, exponent):
      return base ** exponent
  • 关键字参数:明确指定参数名,可打乱顺序
  power(exponent=3, base=2)  # 输出8
  • 默认参数:参数可省略时使用默认值
  def greet(name="访客"):
      print(f"欢迎, {name}!")
  • 可变参数:处理不确定数量参数
  def sum_all(*numbers):  # 元组形式接收
      return sum(numbers)

二、函数高级特性

1. 作用域与命名空间

  • LEGB规则:查找顺序为 Local → Enclosed → Global → Built-in
  • global关键字:修改全局变量
  count = 0
  def increment():
      global count
      count += 1
  • nonlocal关键字:修改外层嵌套函数的变量
  def outer():
      x = 10
      def inner():
          nonlocal x
          x = 20

2. 返回值机制

  • 可返回多个值(实质返回元组)
  def circle_cal(r):
      area = 3.14*r**2
      perimeter = 2*3.14*r
      return area, perimeter

3. 异常处理结合

def safe_divide(a, b):
    try:
        return a / b
    except ZeroDivisionError:
        print("除数不能为零!")
        return None

三、模块化编程实践

1. 模块创建规范

  • 创建math_utils.py文件:
  """数学工具模块(文档字符串)"""

  def average(*nums):
      return sum(nums)/len(nums)

  if __name__ == "__main__":  # 模块自测试
      print("模块测试:", average(85, 90, 78))

2. 模块导入方式

导入方式示例特点
完整导入import math_utils需通过模块名调用
指定导入from math_utils import average直接使用函数名
别名导入import pandas as pd解决长模块名问题
全量导入(慎用)from module import *易导致命名空间污染

3. 包(Package)组织

  • 目录结构示例:
  mypackage/
  ├── __init__.py
  ├── utils.py
  └── config.py
  • __init__.py文件作用:
  • 标识Python包目录
  • 初始化包级变量
  • 控制import *的行为

四、综合项目案例

学生管理系统模块化重构

  1. 数据模块(data.py):


students = [
       {"id": 1001, "scores": [85, 92]},
       {"id": 1002, "scores": [78, 88]}
   ]
  . **计算模块**(calc.py):

python
def average_score(scores):
return sum(scores)/len(scores)
3. **主程序**(main.py):
python
from data import students
from calc import average_score

for stu in students:
print(f"学号{stu['id']} 均分:{average_score(stu['scores']):.1f}")
```

五、最佳实践建议

函数设计原则

    • 单一职责原则(每个函数只做一件事)
    • 参数数量建议不超过5个
    • 函数长度控制在50行以内

    模块化优势

      • 代码复用率提升40%+(据Python官方统计)
      • 调试效率提高(可单独测试模块)
      • 团队协作更高效(模块分工明确)
      文章:函数定义与模块化编程
      作者:咸鱼不当鱼了
      版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0协议
      转载请注明文章地址及作者哦~
      如果觉得网站不错的话,请动动手指分享一下这个小破站吧!
      暂无评论

      发送评论 编辑评论

      
      				
      |´・ω・)ノ
      ヾ(≧∇≦*)ゝ
      (☆ω☆)
      (╯‵□′)╯︵┴─┴
       ̄﹃ ̄
      (/ω\)
      ∠( ᐛ 」∠)_
      (๑•̀ㅁ•́ฅ)
      →_→
      ୧(๑•̀⌄•́๑)૭
      ٩(ˊᗜˋ*)و
      (ノ°ο°)ノ
      (´இ皿இ`)
      ⌇●﹏●⌇
      (ฅ´ω`ฅ)
      (╯°A°)╯︵○○○
      φ( ̄∇ ̄o)
      ヾ(´・ ・`。)ノ"
      ( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
      (ó﹏ò。)
      Σ(っ °Д °;)っ
      ( ,,´・ω・)ノ"(´っω・`。)
      ╮(╯▽╰)╭
      o(*////▽////*)q
      >﹏<
      ( ๑´•ω•) "(ㆆᴗㆆ)
      😂
      😀
      😅
      😊
      🙂
      🙃
      😌
      😍
      😘
      😜
      😝
      😏
      😒
      🙄
      😳
      😡
      😔
      😫
      😱
      😭
      💩
      👻
      🙌
      🖕
      👍
      👫
      👬
      👭
      🌚
      🌝
      🙈
      💊
      😶
      🙏
      🍦
      🍉
      😣
      Source: github.com/k4yt3x/flowerhd
      颜文字
      Emoji
      小恐龙
      花!
      上一篇
      下一篇