新闻详情

新闻详情

首页 / 资讯中心 / 详情

Python-函数

发布时间:2026/9/25 13:31:01来源:尧图网络
Python-函数
一、为什么需要函数问题同一段代码写了 10 遍改一处要改 10 处。解决把代码封装成函数需要时调用即可。函数的好处代码复用——写一次用多次模块化——分工明确易于维护抽象——隐藏实现细节只关心「做什么」二、函数的定义与调用2.1 基本语法def 函数名(参数1, 参数2, ...): 文档字符串说明函数功能 函数体 return 返回值 # 可选2.2 示例def greet(name): 向用户打招呼 print(fHello, {name}!) greet(张三) # 调用 help(greet) # 查看文档2.3 定义函数的规则函数名是标识符遵循命名规范函数名后必须有()函数体必须缩进用return返回结果没有 return 则返回None三、参数详解重点3.1 形参与实参def add(a, b): # a, b 是形参形式参数 return a b add(3, 5) # 3, 5 是实参实际参数3.2 位置参数与关键字参数def info(name, age, city): print(f{name}, {age}岁, {city}) info(张三, 20, 北京) # 位置参数 info(name李四, age22, city上海) # 关键字参数 info(王五, city广州, age25) # 混合位置在前3.3 默认参数def greet(name, greetingHello): print(f{greeting}, {name}!) greet(张三) # Hello, 张三! greet(李四, Hi) # Hi, 李四!⚠️ 默认参数不要用可变对象# 错误 def bad(lst[]): lst.append(1) return lst # 正确 def good(lstNone): if lst is None: lst [] lst.append(1) return lst3.4 不定长参数 *argsdef total(*args): print(args) # 元组 return sum(args) total(1, 2, 3, 4) # 103.5 不定长关键字参数 **kwargsdef show(**kwargs): print(kwargs) # 字典 show(name张三, age20) # {name: 张三, age: 20}3.6 参数顺序def func(a, b, c0, *args, **kwargs): pass # 顺序位置参数 → 默认参数 → *args → **kwargs3.7 解包传参def add(a, b, c): return a b c add(*[1, 2, 3]) # 序列解包 add(**{a: 1, b: 2, c: 3}) # 字典解包3.8 参数传递机制Python 是对象引用传递不可变对象int、str、tuple函数内修改不影响外部可变对象list、dict函数内修改会影响外部def modify(lst): lst.append(4) nums [1, 2, 3] modify(nums) print(nums) # [1, 2, 3, 4]四、返回值def get_min_max(nums): return min(nums), max(nums) # 返回元组 minimum, maximum get_min_max([3, 1, 4, 1, 5]) print(minimum, maximum) # 1 5 # 没有 return 返回 None def do_nothing(): pass print(do_nothing()) # None五、函数嵌套调用def square(x): return x ** 2 def sum_of_squares(a, b): return square(a) square(b) print(sum_of_squares(3, 4)) # 25六、变量作用域6.1 局部变量与全局变量x 10 # 全局变量 def func(): x 20 # 局部变量不影响全局 print(x) # 20 func() print(x) # 106.2 global 关键字count 0 def increment(): global count count 1 increment() print(count) # 16.3 nonlocal 关键字def outer(): x 10 def inner(): nonlocal x x 20 inner() print(x) # 20 outer()6.4 LEGB 规则查找变量名的顺序Local →Enclosing →Global →Built-in七、递归函数调用自身必须有终止条件。def factorial(n): if n 1: return 1 return n * factorial(n - 1) print(factorial(5)) # 120递归三要素终止条件递归出口递归公式每次递归向终止条件靠近八、匿名函数 lambda# 语法lambda 参数: 表达式 square lambda x: x ** 2 print(square(5)) # 25 # 常用于 sorted 的 key students [(张三, 85), (李四, 92), (王五, 78)] students.sort(keylambda s: s[1], reverseTrue) print(students)九、练习题基础题1.编写is_prime(n)判断素数。2.编写函数接收任意个数数字返回平均值。3.编写函数返回字符串中 (大写个数, 小写个数, 数字个数)。4.用 lambda 将[(apple,3),(ban,2)]按数量降序排列。5.编写递归函数求 12...n。进阶题6.实现二分查找递归版。7.编写装饰器timer打印函数执行耗时。参考答案点击展开参考答案import time def is_prime(n): if n 2: return False for i in range(2, int(n**0.5) 1): if n % i 0: return False return True def average(*args): return sum(args) / len(args) if args else 0 def count_chars(s): return (sum(1 for c in s if c.isupper()), sum(1 for c in s if c.islower()), sum(1 for c in s if c.isdigit())) def sum_n(n): if n 0: return 0 return n sum_n(n - 1) def timer(func): def wrapper(*args, **kwargs): start time.time() result func(*args, **kwargs) print(f{func.__name__} 耗时: {time.time()-start:.4f}s) return result return wrapper
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

大模型算法之后,为什么产品经理成了最热门的岗位?TaoToken视角下的AI产品经理NPDP能力拆解 2026/9/25 14:05:10

大模型算法之后,为什么产品经理成了最热门的岗位?TaoToken视角下的AI产品经理NPDP能力拆解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
TVA具身智能运行机理(44):适配国产NPU核心技巧解析 2026/9/25 14:04:58

TVA具身智能运行机理(44):适配国产NPU核心技巧解析

前沿技术探索:TVA智能体(简称TVA)TVA智能体(亦称“AI智能体视觉”)是依托Transformer架构与“因式智能体”理论构建的新型工业视觉系统,也是当前最具代表性的具身视觉技术之一。它有机融合深度强化学习&…

阅读更多 →
黄白助手 第 059 个开关:启用随机尾巴来源的位置、验证方法与风险边界 2026/9/25 14:04:51

黄白助手 第 059 个开关:启用随机尾巴来源的位置、验证方法与风险边界

🔥 个人主页: 杨利杰YJlio ❄️ 个人专栏: 《Windows 疑难杂症与工单复盘案例库》 《Sysinternals实战教程》 《WINDOWS教程》 《Windows PowerShell 实战》 《IOS插件分析测试》 《超简单:用Python让Excel飞起来》…

阅读更多 →
自从用上Claude Code后,敲代码真的好简单:TaoToken统一Key接入与settings.json配置实战 2026/9/25 14:04:45

自从用上Claude Code后,敲代码真的好简单:TaoToken统一Key接入与settings.json配置实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Codex 重置次数查询 Skill:把过期时间写进 config.toml 骨架 2026/9/25 14:04:38

Codex 重置次数查询 Skill:把过期时间写进 config.toml 骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
项目实训5——AI Coding工具切换:用CC Switch统一管理Claude Code配置与TaoToken接入 2026/9/25 14:04:38

项目实训5——AI Coding工具切换:用CC Switch统一管理Claude Code配置与TaoToken接入

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉