游乐游手机版
首页/AI教程/文章详情

初级程序员实战教程第四篇实战项目解析

时间:2026-05-29 07:48
七 函数:模块化编程的核心 在编程领域中,函数是最基础且至关重要的概念之一。其本质作用在于“封装”——将一段逻辑独立出来,使代码更易阅读、复用性更强,是构建高质量程序的关键。 7 1 函数的定义与调用(Python基础) 下面是一个最简单的Python函数示例:定义函数并包含文档字符串,随后执行调

七. 函数:模块化编程的核心

在编程领域中,函数是最基础且至关重要的概念之一。其本质作用在于“封装”——将一段逻辑独立出来,使代码更易阅读、复用性更强,是构建高质量程序的关键。

7.1 函数的定义与调用(Python基础)

初级程序员实战教程(四)

下面是一个最简单的Python函数示例:定义函数并包含文档字符串,随后执行调用。整个过程非常直观易懂。

def greet(name):"""显示问候语(文档字符串)"""print(f"你好,{name}")greet("小明") # 调用# 带返回值def add(a, b):return a + bresult = add(3, 5)

7.2 函数参数类型详解(位置、默认、可变参数)

参数机制是Python函数的核心特性之一,掌握多种参数用法能避免常见错误,提升代码灵活性。

# 1. 位置参数(必须按顺序)def introduce(name, age):print(f"{name} {age}岁")introduce("李华", 18)# 2. 关键字参数(可乱序)introduce(age=20, name="王芳")# 3. 默认参数(必须放在位置参数之后)def power(base, exponent=2):return base ** exponentprint(power(3)) # 9print(power(3, 3)) # 27# 这里要特别注意:默认参数不能用可变对象(比如列表)def add_item(item, lst=[]): # 错误示范,lst会在函数定义时创建一次lst.append(item)return lstprint(add_item(1)) # [1]print(add_item(2)) # [1,2] 并不是 [2],因为共享同一个列表# 正确做法:用None替代def add_item(item, lst=None):if lst is None:lst = []lst.append(item)return lst# 4. 可变位置参数 *args(接收成元组)def sum_all(*numbers):return sum(numbers)print(sum_all(1,2,3,4)) # 10# 5. 可变关键字参数 **kwargs(接收成字典)def print_info(**info):for k, v in info.items():print(f"{k}: {v}")print_info(name="张三", age=25)# 6. 组合使用def func(a, b, *args, c=10, **kwargs):pass

7.3 函数返回值与变量作用域(LEGB规则)

函数可以返回一个或多个值,多个值本质上以元组形式返回。作用域方面,LEGB规则规定了变量查找顺序:优先局部,逐层向外,全局兜底。

# 多个返回值实际返回元组def min_max(lst):return min(lst), max(lst)minimum, maximum = min_max([3,1,4,2])# 作用域(LEGB规则)x = 10 # 全局变量def outer(): y = 20 # 外层变量 def inner(): z = 30 # 局部变量 nonlocal y # 声明要修改外层变量 y += 1 global x # 声明要修改全局变量 x += 1 print(x, y, z) inner()outer()

7.4 lambda 匿名函数(简洁表达式)

当函数逻辑十分简短时,使用lambda匿名函数比def更便捷。它常与sorted、filter、map等内置函数配合使用。

# 简单的单表达式函数square = lambda x: x ** 2print(square(5)) # 25# 常与sorted、filter、map配合students = [("张三", 85), ("李四", 92), ("王五", 78)]students_sorted = sorted(students, key=lambda s: s[1], reverse=True)print(students_sorted)# 按成绩降序# filter 过滤numbers = [1,2,3,4,5,6]evens = list(filter(lambda x: x%2==0, numbers))# map 映射squared = list(map(lambda x: x**2, numbers))

7.5 递归函数简介(深度限制与阶乘示例)

递归即函数调用自身,适用于阶乘、树遍历等场景。但需注意递归深度限制,Python默认约为1000层。

# 计算阶乘def factorial(n):if n == 0:return 1else:return n * factorial(n-1)print(factorial(5)) # 120# 注意递归深度限制(默认1000)

7.6 装饰器入门(为函数动态添加功能)

装饰器本质上是一个返回函数的函数,常用于在不修改原函数逻辑的前提下添加额外功能,例如计算执行耗时。

def timer(func):import timedef wrapper(*args, **kwargs):start = time.time()result = func(*args, **kwargs)end = time.time()print(f"{func.__name__} 耗时 {end-start:.4f}秒")return resultreturn wrapper@timerdef slow_function():import timetime.sleep(1)return "完成"slow_function()

八. 模块与包(代码组织与复用)

8.1 模块导入方式(多种方法对比)

将代码拆分至不同文件中复用的机制称为模块。Python提供了多种导入方式,推荐尽量明确导入内容,避免使用from os import *这种通配写法以防止命名冲突。

# 方式1: 导入整个模块import mathprint(math.sqrt(16))# 方式2: 导入特定函数from random import randint, choiceprint(randint(1,10))# 方式3: 导入所有(不推荐,可能命名冲突)from os import *# 方式4: 起别名import datetime as dtnow = dt.datetime.now()

8.2 if __name__ == "__main__" 的作用(模块安全执行)

这段条件判断的作用是:当该文件作为主程序直接运行时执行指定代码,而被其他模块导入时不执行。撰写模块时添加此语句可提升安全性与可测试性。

创建 mymodule.py:

def hello():print("Hello from module")if __name__ == "__main__":# 当直接运行此文件时执行,被导入时不执行hello()

8.3 创建自己的包(模块文件夹结构)

将多个模块放入一个文件夹,并在其中放置__init__.py文件,即可构成一个包。该文件可以为空,但必须存在以标识包。

mypackage/ __init__.py # 可以为空,但必须存在 module1.py module2.py

导入时使用:from mypackage import module1

8.4 安装第三方库(pip常用命令)

Python的强大生态离不开第三方库,pip是最常用的包管理工具。掌握几个基本命令即可满足日常依赖管理需求。

pip install requests # 安装pip list # 列出已安装pip install requests==2.28.0 # 指定版本pip freeze > requirements.txt # 导出依赖

来源:https://developer.aliyun.com/article/1737980
上一篇数字化变革浪潮开启新时代 下一篇酷宣AI模板一键生成绝美文章
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
GPT Workspace通过GPT-5强化Google Workspace,文档表格邮件创作效率与智能化提升
AI教程 · 2026-05-29

GPT Workspace通过GPT-5强化Google Workspace,文档表格邮件创作效率与智能化提升

GPT Workspace 产品介绍:GPT-5 如何增强 Google Workspace 工作效率 如果你每天都在使用 Google Workspace 进行文档撰写、表格处理、邮件沟通和演示制作,一定深有体会:大量重复性的办公任务耗费了宝贵的时间。现在,GPT Workspace 将 GPT-

AI助手提升年终总结与周报效率的精准营销策略
AI教程 · 2026-05-29

AI助手提升年终总结与周报效率的精准营销策略

适合需求:在信息爆炸的时代,企业所承受的竞争压力几乎覆盖了所有维度,其中营销领域尤为令人困扰。无论是撰写年终总结还是生成周报,精准的营销策略已成为不可或缺的需求——没有谁愿意在庞杂的数据中迷失方向。当我们复盘营销活动时,总会思考:过去哪些数字营销策略真正发挥了效果?哪些内容营销策略有待改进?然而实际

Afri Studio 非洲创意工作室
AI教程 · 2026-05-29

Afri Studio 非洲创意工作室

Afri Studio是什么先来聊聊Afri Studio——它是Afri AI团队推出的一款AI媒体创作工作室,目标很明确:把原本高高在上的智能技术拉下神坛,让普通用户也能轻松生成高质量的文本、图像、音频等内容。换句话说,这是一个面向内容创作者、博主、营销人员、艺术家的“AI工具箱”,帮你高效搞定

Geniea专注Midjourney提示词优化提升创意生成效率
AI教程 · 2026-05-29

Geniea专注Midjourney提示词优化提升创意生成效率

Geniea产品详解:Midjourney提示优化工具Geniea是一款专注于Midjourney提示词优化的智能平台,致力于帮助创作者快速生成高质量且富有创意的提示方案。无论您需要电影镜头、食品摄影还是汽车广告等场景的提示词,只需输入简单指令,系统便会自动输出优化后的提示文本,大幅提升创作效率。提

幼儿园大班毕业典礼方案PPT AI轻松制作精彩回顾
AI教程 · 2026-05-29

幼儿园大班毕业典礼方案PPT AI轻松制作精彩回顾

使用情景 每年毕业季来临之际,幼儿园大班毕业典礼的筹备工作,总是牵动着众多老师、家长和孩子们的心弦。这不仅仅是一场简单的活动,更是孩子们人生中首个重要的成长仪式,标志着他们告别幼儿时光、迈向新阶段的里程碑。对于家长而言,这也是一次充满感怀的“毕业”,意味着一段陪伴旅程的暂时落幕。 如何让这场典礼既温