当前位置: 首页 > article >正文

【Python基础入门】第四课: 函数

大家好欢迎来到Python基础第四课前三节课我们学习了变量、数据类型、运算符、流程控制和容器类型。今天我们要进入编程中最重要的概念之一——函数。如果说变量是数据的容器那么函数就是代码的容器。学会函数你就能告别重复代码写出更优雅、更高效的程序。一、为什么需要函数想象一下你每天早上都要刷牙拿牙刷→挤牙膏→刷上排牙→刷下排牙→漱口→清洗牙具。如果每次刷牙都要重复思考这些步骤那也太累了。所以你会把这套流程固化成一个习惯每天自动执行。编程也是如此。如果你有一段代码需要多次使用比如计算两个数的和难道每次都要重新写一遍当然不我们可以把它封装成函数需要时直接调用。函数的好处提高代码复用性写一次到处用。模块化编程把复杂问题拆分成小函数每个函数只做一件事调试和维护都更方便。二、函数的定义与调用2.1 定义函数的格式pythondef 函数名(参数1, 参数2, ...): 函数说明文档 函数体 return 返回值def关键字表示定义一个函数。函数名要见名知意比如calculate_sum、print_info。参数函数需要的数据可以有多个也可以没有。函数体函数要执行的代码块。return返回值告诉调用者执行结果。如果没有返回值可以省略。2.2 调用函数的格式python变量 函数名(实参1, 实参2, ...)2.3 生活中的例子模拟打电话python# 定义函数 def call(): print(----------------(拨号方)拨号----------------) print((拨号方)手机会发送信号包到就近的基站) print((拨号方)就近的基站 会通过 地下电缆发送信号包到 运营商) print((拨号方)运营商会通过互联网将信号包发送给 (接收方)的运营商) print((接收方)运营商会通过互联网将信号包发送给 (接收方)就近的基站) print((接收方)就近的基站 会发送信号包到 (接收方)手机) print(---------(接收方)盲音等待, 嘟嘟嘟...--------) print( * 10) # 调用函数 call() # 第一次拨号 call() # 第二次拨号是不是很简单一次定义无限次调用。三、函数的四种形态根据有没有参数和返回值函数可以分为四种形态。我们以计算两个整数的和为例来演示。3.1 无参无返回值这种函数不需要外部数据也不返回结果只是执行一段代码。pythondef get_sum(): a, b 10, 20 result a b print(f和是{result}) get_sum() # 输出和是30缺点功能固定不够灵活。3.2 有参无返回值通过参数接收外部数据但不返回结果。pythondef get_sum(a, b): # a, b 是形参形式参数 result a b print(f和是{result}) get_sum(11, 22) # 11, 22 是实参实际参数 get_sum(100, 200) # 可以传入不同的值形参定义函数时写的参数相当于占位符。实参调用函数时传入的具体值。3.3 无参有返回值函数不需要外部数据但返回计算结果让调用者自己处理。pythondef get_sum(): a, b 10, 20 result a b return result # 返回结果 my_sum get_sum() print(f和是{my_sum})3.4 有参有返回值最常用灵活接收数据并返回结果。pythondef get_sum(a, b): return a b result get_sum(111, 222) print(f和是{result})总结参数让函数更灵活。返回值让函数的结果可以被外部使用。四、函数的说明文档写函数就像生产工具别人包括未来的自己要用这个工具得知道它是干什么的、需要什么参数、返回什么。这就需要说明文档docstring。4.1 如何写说明文档在函数内部第一行用三引号括起来。pythondef get_sum(a, b): 计算两个整数的和。 :param a: 第一个整数 :param b: 第二个整数 :return: 两个整数的和 return a b4.2 如何查看说明文档在PyCharm中把鼠标悬停在函数名上或者按Ctrl QWindows就能看到。养成写文档的好习惯让代码更具可读性。五、函数的嵌套调用一个函数里可以调用另一个函数这叫嵌套调用。程序执行时会按照顺序结构先执行外层函数遇到内层函数就跳进去执行执行完再回来继续。5.1 简单示例pythondef fun1(): print(---------- func1函数 start ----------) print(♥️♥️♥️ 我是 func1 函数 ♥️♥️♥️) print(---------- func1函数 end ----------) def fun2(): print(---------- func2函数 start ----------) fun1() # 调用 func1 print(♣️♣️♣️ 我是 func2 函数 ♣️♣️♣️) print(---------- func2函数 end ----------) if __name__ __main__: fun2()执行顺序进入 fun2打印 start。调用 fun1进入 fun1打印内容。fun1 执行完返回 fun2继续打印剩余内容。5.2 内存中的“栈”为了更好理解嵌套调用需要了解内存中的栈概念栈是一种后进先出的数据结构。每次调用函数系统会把函数的局部变量等信息压栈放入栈顶。函数执行完毕会弹栈从栈顶移除。这样就能保证嵌套调用时能正确返回到调用位置。六、函数实战案例案例1奇偶数求和需求定义一个函数calculate_sum接收一个数字列表分别计算偶数和奇数的和最后返回一个列表[偶数和, 奇数和]。pythondef calculate_sum(numbers_list): 计算列表中偶数和奇数的和。 :param numbers_list: 数字列表 :return: [偶数和, 奇数和] even_sum 0 odd_sum 0 for num in numbers_list: if num % 2 0: even_sum num else: odd_sum num return [even_sum, odd_sum] # 调用 numbers [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] even, odd calculate_sum(numbers) # 拆包接收 print(f偶数和{even}奇数和{odd})输出text偶数和30奇数和25注意函数可以返回多个值Python会自动把它们打包成一个元组。我们也可以用拆包直接接收。案例2模拟计算器需求定义一个函数my_calculate接收两个整数返回它们的加、减、乘、除结果。pythondef my_calculate(a, b): 模拟计算器返回两个整数的加减乘除结果。 :param a: 第一个整数 :param b: 第二个整数 :return: (和, 差, 积, 商) 元组 return a b, a - b, a * b, a / b # 调用 result my_calculate(10, 5) print(result) # (15, 5, 50, 2.0) print(type(result)) # class tuple如果返回多个值函数会返回一个元组。你可以用一个变量接收也可以直接用拆包pythonadd, sub, mul, div my_calculate(10, 5) print(f和{add}差{sub}积{mul}商{div})七、总结与作业今天我们学习了函数的概念、定义与调用。函数的四种形态无参无返回值、有参无返回值、无参有返回值、有参有返回值。形参和实参的区别。说明文档的写法。函数的嵌套调用和栈的概念。两个实用案例奇偶数求和、模拟计算器。函数是模块化编程的基础掌握它你就能写出结构清晰、易于维护的代码。课后作业编写一个函数is_prime(n)判断一个数是否为质数返回True或False。编写一个函数max_of_three(a, b, c)返回三个数中的最大值。编写一个函数factorial(n)计算 n 的阶乘用递归或循环实现。结合今天学的嵌套调用写一个程序定义两个函数input_numbers()负责让用户输入一组数字以空格分隔process_numbers()负责调用calculate_sum计算奇偶数和并打印结果。欢迎在评论区分享你的代码或疑问 预告下一节课我们将学习变量作用域敬请期待

相关文章:

【Python基础入门】第四课: 函数

大家好,欢迎来到Python基础第四课!前三节课我们学习了变量、数据类型、运算符、流程控制和容器类型。今天我们要进入编程中最重要的概念之一——函数。如果说变量是数据的容器,那么函数就是代码的容器。学会函数,你就能告别重复代…...

踩坑复盘:弃MySQL选PostgreSQL,地理数据存储终于不头疼了

一、项目血泪史:MySQL存储地理数据,真的太不方便环卫车轨迹系统的核心难点,就是既要存车辆、任务这类标准结构化业务数据,保证数据规范和事务一致性,又要处理大量GPS轨迹、电子围栏这类地理空间数据,实现实…...

剪流AI手机受欢迎程度怎么样?深度解析其精准数据获客之道

在当今信息爆炸、竞争白热化的商业环境中,企业普遍面临获客成本高、效率低、精准度不足等挑战。剪流AI手机作为一款融合前沿人工智能技术的智能设备,正迅速成为众多企业关注的焦点。其受欢迎程度不仅源于硬件品质,更在于它如何通过AI驱动&…...

国家级认证 信息系统项目管理师(软高)一站式通关课程

破局程序员35岁危机:信息系统项目管理师获课:97it.top/14591/如何重构职业发展曲线 ——从技术执行者到战略决策者的跃迁路径 一、程序员转型的必然性与高项证书的战略价值行业倒逼转型的三大信号 技术迭代加速:低代码/AI编程工具逐步替代…...

如何借助开源字体实现专业级排版?——EB Garamond 12复古字体全维度应用指南

如何借助开源字体实现专业级排版?——EB Garamond 12复古字体全维度应用指南 【免费下载链接】EBGaramond12 项目地址: https://gitcode.com/gh_mirrors/eb/EBGaramond12 在数字设计领域,选择合适的字体往往是提升作品专业质感的关键环节。EB Ga…...

魔兽争霸III现代化改造:从卡顿到流畅的技术革新之路

魔兽争霸III现代化改造:从卡顿到流畅的技术革新之路 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 问题发现:当经典遭遇现代硬…...

MiniMax Token Plan 权益码

MiniMax 专属邀请码订阅 Token Plan,享9折优惠,并获得 Builder 身份👉 立即参与:https://platform.minimaxi.com/subscribe/token-plan?code1EcvFvxqXP&sourcelinkMiniMax M2.7 已上线 性价比突出 与 openclaw 最佳组合之一。…...

小说作者必备:用次元画室5分钟搞定主角视觉形象

小说作者必备:用次元画室5分钟搞定主角视觉形象 作为一名小说作者,你是否经常遇到这样的困境:脑海中那个鲜活的角色形象,却无法准确传达给插画师?或者花费大量时间寻找参考图,结果画出来的角色总差那么点意…...

Sigfox_Com轻量库:嵌入式Sigfox通信快速集成指南

1. Sigfox_Com 库概述Sigfox_Com 是一个面向嵌入式平台的轻量级 Sigfox 通信协议封装库,其核心设计目标是解耦硬件抽象层与 Sigfox 协议逻辑,使开发者能够将任意具备标准 UART 接口的 Sigfox 模块(如 WISOL WSSFM10/12、TELECOM SFX-3000、ON…...

Pixel Dimension Fissioner实战:结合RAG实现领域知识约束的维度裂变

Pixel Dimension Fissioner实战:结合RAG实现领域知识约束的维度裂变 1. 工具概览与核心价值 Pixel Dimension Fissioner(像素语言维度裂变器)是一款基于MT5-Zero-Shot-Augment核心引擎构建的创新型文本增强工具。与传统AI写作工具不同&…...

CBAM注意力机制实战:如何在PyTorch中轻松集成通道与空间注意力模块

CBAM注意力机制实战:PyTorch中通道与空间注意力模块的高效集成指南 在计算机视觉领域,注意力机制已经成为提升卷积神经网络性能的关键技术。CBAM(Convolutional Block Attention Module)通过同时关注"什么特征重要"&…...

TscanCode嵌入式静态代码扫描实战指南

推荐一个好用的嵌入式静态代码扫描工具:TscanCode深度实践指南 1. 静态代码分析在嵌入式开发中的工程价值 嵌入式系统对可靠性、实时性和资源约束具有严苛要求,一旦部署到硬件平台,调试窗口极小,现场复现与修复成本极高。因此&a…...

基于.NET 6和WPF的OpenCVSharp与ReactiveUI学习实践:3D点云数据处...

这是一个使用.net 6 基于wpf 、OpencvSharp(opencv的.net wrapper)、ReactiveUI等开发的自用工具,主要用来做ReactiveUI与OpencvSharp学习过程中的尝试以及opencv算子参数的调试等,该程序还可以显示3D点云数据(目前程序中的点云数据是由格雷码条纹拍摄的…...

PCB制造全流程解析:从设计到成品的工程实现

1. PCB制造全流程技术解析:从设计到成品的工程实现印制电路板(Printed Circuit Board,PCB)是现代电子系统的物理载体与电气互连基础。其本质并非“印刷”意义上的油墨转印,而是通过光化学蚀刻与电化学沉积等精密工艺&a…...

日期题目集

#include <stdio.h> #include <stdbool.h> #include <string.h>// 题目给出的数组 int arr[100] {5,6,8,6,9,1,6,1,2,4,9,1,9,8,2,3,6,4,7,7,5,9,5,0,3,8,7,5,8,1,5,8,6,1,8,3,0,3,7,9,2,7,0,5,8,8,5,7,0,9,9,1,9,4,4,6,8,6,3,3,8,5,1,6,3,4,6,7,0,7,8,2,7,…...

Wedecode完全指南:微信小程序源代码还原与安全审计终极工具

Wedecode完全指南&#xff1a;微信小程序源代码还原与安全审计终极工具 【免费下载链接】wedecode 全自动化&#xff0c;微信小程序 wxapkg 包 源代码还原工具, 线上代码安全审计 项目地址: https://gitcode.com/gh_mirrors/we/wedecode 微信小程序开发者和安全研究人员…...

Pixel Dimension Fissioner步骤详解:如何导出维度手稿为Markdown/PDF/JSON

Pixel Dimension Fissioner步骤详解&#xff1a;如何导出维度手稿为Markdown/PDF/JSON 1. 工具概览 Pixel Dimension Fissioner是一款基于MT5-Zero-Shot-Augment核心引擎构建的文本增强工具&#xff0c;它将传统AI工具转化为一个充满活力的16-bit像素冒险工坊。通过这款工具&…...

智谱 GLM-OCR:0.9B 小模型登顶 OCR 榜单,3月起还能一行代码接入 Agent

文档 OCR 领域正在经历一场参数量军备竞赛——Qwen3-VL 用 235B 参数拿到 89 分&#xff0c;Gemini-3 Pro 拿到 90 分。但 OmniDocBench V1.5 榜单的第一名 GLM-OCR&#xff0c;参数量只有 0.9B。就在上周&#xff08;3 月 11-12 日&#xff09;&#xff0c;智谱连续发布了两个…...

ShawzinBot:智能MIDI自动化工具如何让Warframe玩家轻松演奏音乐

ShawzinBot&#xff1a;智能MIDI自动化工具如何让Warframe玩家轻松演奏音乐 【免费下载链接】ShawzinBot Convert a MIDI input to a series of key presses for the Shawzin 项目地址: https://gitcode.com/gh_mirrors/sh/ShawzinBot ShawzinBot是一款专为Warframe游戏…...

2026年数据标注行业丨高质量发展成唯一路径

1月13日&#xff0c;工业和信息化部部长李乐成在《权威访谈&#xff1a;开局“十五五”》中表示&#xff0c;工信部将启动工业数据筑基行动&#xff0c;聚焦制造业重点行业&#xff0c;突出抓好数据的采、集、用&#xff0c;建设一批高质量行业数据集&#xff0c;壮大数据咨询、…...

高效汉化方案:5分钟让Axure RP全面支持中文界面

高效汉化方案&#xff1a;5分钟让Axure RP全面支持中文界面 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包&#xff0c;不定期更新。支持 Axure 9、Axure 10。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为A…...

Pixel Dimension Fissioner真实生成:GitHub Issue描述→PR描述→Release Note三段裂变

Pixel Dimension Fissioner真实生成&#xff1a;GitHub Issue描述→PR描述→Release Note三段裂变 1. 工具概览 像素语言维度裂变器(Pixel Dimension Fissioner)是一款基于MT5-Zero-Shot-Augment核心引擎构建的文本改写与增强工具。它将传统AI工具的工业感重构为16-bit像素冒…...

SpringBoot+Vue 美术馆管理系统平台完整项目源码+SQL脚本+接口文档【Java Web毕设】

摘要 随着数字化时代的快速发展&#xff0c;美术馆作为文化艺术传播的重要载体&#xff0c;亟需高效的管理系统来提升运营效率和服务质量。传统的美术馆管理多依赖人工操作&#xff0c;存在信息更新滞后、数据管理混乱等问题&#xff0c;难以满足现代观众的需求。美术馆管理系统…...

如何在Windows上轻松访问Linux分区:Ext2Read终极实用指南

如何在Windows上轻松访问Linux分区&#xff1a;Ext2Read终极实用指南 【免费下载链接】ext2read A Windows Application to read and copy Ext2/Ext3/Ext4 (With LVM) Partitions from Windows. 项目地址: https://gitcode.com/gh_mirrors/ex/ext2read 你是否遇到过这样…...

SAP-SD-主数据相关讲解-总览

SD相关主数据主要讲解以下几点&#xff1b;1、业务合作伙伴主数据维护。2、物料主数据维护。3、客户物料信息记录维护。4、定价的条件主数据维护。5、其他主数据介绍。一、主数据的作用1.1 销售凭证的数据来源销售凭证的大部分信息可以来源于系统主数据里相关栏位的默认值&…...

Qwen-Image镜像惊艳案例:RTX4090D解析科研论文插图并生成方法论总结

Qwen-Image镜像惊艳案例&#xff1a;RTX4090D解析科研论文插图并生成方法论总结 1. 科研助手新体验&#xff1a;当AI遇到学术论文 想象一下这样的场景&#xff1a;你正在阅读一篇复杂的科研论文&#xff0c;面对密密麻麻的图表和数据&#xff0c;需要花费数小时才能理解其中的…...

MCP 2.0协议安全规范实战避坑手册,覆盖TLS 1.3握手劫持、ECDSA密钥泄露、时间戳漂移等8类高危场景应对方案

第一章&#xff1a;MCP 2.0协议安全规范全景概览 MCP 2.0&#xff08;Managed Control Protocol 2.0&#xff09;是面向云原生环境设计的轻量级设备控制与策略分发协议&#xff0c;其安全规范覆盖身份认证、信道加密、权限隔离、审计追踪与抗重放五大核心维度。相比前代版本&am…...

如何解决多音频设备切换难题:AudioSwitch的高效管理方案

如何解决多音频设备切换难题&#xff1a;AudioSwitch的高效管理方案 【免费下载链接】AudioSwitch Switch between default audio input or output change volume 项目地址: https://gitcode.com/gh_mirrors/au/AudioSwitch 在现代工作与娱乐场景中&#xff0c;电脑用户…...

Janus-Pro-7B开源模型性能对比分析

Janus-Pro-7B开源模型性能对比分析 1. 引言 最近多模态大模型领域有个挺有意思的现象&#xff1a;很多模型要么擅长理解图片内容&#xff0c;要么擅长根据文字生成图片&#xff0c;但能把两者都做好的并不多。DeepSeek开源的Janus-Pro-7B试图解决这个问题&#xff0c;它用一个…...

3步掌握地理数据三维化:BlenderGIS插件从安装到应用全指南

3步掌握地理数据三维化&#xff1a;BlenderGIS插件从安装到应用全指南 【免费下载链接】BlenderGIS Blender addons to make the bridge between Blender and geographic data 项目地址: https://gitcode.com/gh_mirrors/bl/BlenderGIS BlenderGIS是一款连接Blender与地…...