新闻详情

新闻详情

首页 / 资讯中心 / 详情

Python-函数

发布时间:2026/11/12 12:17:50来源:尧图网络
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

相关资讯

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

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/11 13:52:51

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/10 19:42:40

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/12 9:50:02

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/12 9:25:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/11 15:37:39

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/10 17:14:10

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

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

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