pyhton基础【11】函数一

目录

一.函数说明

二.函数介绍

函数简介

作用

函数分类

 三.自定义函数

定义函数

调用函数

pass关键字

定义一次执行多次


一.函数说明

Python中的函数是一个重要的编程概念,它允许编程者封装代码块以实现特定的功能。函数的作用和应用场景非常广泛,以下是一些关键点。

作用

1代码重用:通过定义函数,可以避免重复编写相同的代码。这样做不仅可以减少工作量,还可以使代码更加组织化和可维护。

2模块化:函数可以将复杂的问题分解为较小的、更易于管理和测试的部分。这可以提高代码的可读性和可维护性。

3抽象:函数允许从细节抽象出来,侧重于高层次的操作。用户可以不必关心函数的内部实现,只需了解其接口(输入和输出)。

4命名空间分隔:函数有助于在局部作用域中封装变量,避免全局命名冲突,所以函数内的名称不会和全局命名空间发生冲突。

应用场景

1数据处理:对数据执行清洗、转换、计算等操作时,可以编写函数来处理各种数据结构。

2任务自动化:常用于写脚本来自动化日常任务,如文件处理、网络请求等。

3API开发:在Web开发中,函数常用于定义API端点,处理HTTP请求和响应。

4数学计算:在科学计算或工程领域,函数可用于封装数学方程或计算。

5用户定义的操作:在面向对象编程中,函数(即方法)用于定义对象的行为。

6回调和事件驱动编程:在图形用户界面GUI编程或网络编程中,函数作为回调对特定事件做出响应。

7测试和验证:编写自动化测试脚本时,函数可以用来封装测试用例和断言。

总的来说,在Python编程中,函数是代码组织的基本单元,它在简化代码结构、提高代码复用性和维护性方面发挥着重要作用。熟练使用函数可以极大提高编程效率和代码质量。

二.函数介绍
函数简介

函数:一个功能独立的代码块

示例:

# 定义一个函数,能够完成打印信息的功能
def print_info():print('------------------------------------')print('         人生苦短,我用Python         ')print('------------------------------------')
作用

函数在编程中是非常重要的一个知识点,大体功能如下

  • 能够将部分代码划分为一个整体的功能
  • 只需定义函数1次就可以使用N次,可以大大减少了代码的冗余
  • 代码看上去更加整洁美观

示例一:未使用函数的情况

# 输出第1遍 佛祖镇楼
print("                            _ooOoo_  ")
print("                           o8888888o  ")
print("                           88  .  88  ")
print("                           (| -_- |)  ")
print("                            O\\ = /O  ")
print("                        ____/`---'\\____  ")
print("                      .   ' \\| |// `.  ")
print("                       / \\||| : |||// \\  ")
print("                     / _||||| -:- |||||- \\  ")
print("                       | | \\\\\\ - /// | |  ")
print("                     | \\_| ''\\---/'' | |  ")
print("                      \\ .-\\__ `-` ___/-. /  ")
print("                   ___`. .' /--.--\\ `. . __  ")
print("                ."" '< `.___\\_<|>_/___.' >'"".  ")
print("               | | : `- \\`.;`\\ _ /`;.`/ - ` : | |  ")
print("                 \\ \\ `-. \\_ __\\ /__ _/ .-` / /  ")
print("         ======`-.____`-.___\\_____/___.-`____.-'======  ")
print("                            `=---='  ")
print("  ")
print("         .............................................  ")
print("                  佛祖镇楼                  BUG辟易  ")
print("          佛曰:  ")
print("                  写字楼里写字间,写字间里程序员;  ")
print("                  程序人员写程序,又拿程序换酒钱。  ")
print("                  酒醒只在网上坐,酒醉还来网下眠;  ")
print("                  酒醉酒醒日复日,网上网下年复年。  ")
print("                  但愿老死电脑间,不愿鞠躬老板前;  ")
print("                  奔驰宝马贵者趣,公交自行程序员。  ")
print("                  别人笑我忒疯癫,我笑自己命太贱;  ")
print("                  不见满街漂亮妹,哪个归得程序员?")# 输出第2遍 佛祖镇楼
print("                            _ooOoo_  ")
print("                           o8888888o  ")
print("                           88  .  88  ")
print("                           (| -_- |)  ")
print("                            O\\ = /O  ")
print("                        ____/`---'\\____  ")
print("                      .   ' \\| |// `.  ")
print("                       / \\||| : |||// \\  ")
print("                     / _||||| -:- |||||- \\  ")
print("                       | | \\\\\\ - /// | |  ")
print("                     | \\_| ''\\---/'' | |  ")
print("                      \\ .-\\__ `-` ___/-. /  ")
print("                   ___`. .' /--.--\\ `. . __  ")
print("                ."" '< `.___\\_<|>_/___.' >'"".  ")
print("               | | : `- \\`.;`\\ _ /`;.`/ - ` : | |  ")
print("                 \\ \\ `-. \\_ __\\ /__ _/ .-` / /  ")
print("         ======`-.____`-.___\\_____/___.-`____.-'======  ")
print("                            `=---='  ")
print("  ")
print("         .............................................  ")
print("                  佛祖镇楼                  BUG辟易  ")
print("          佛曰:  ")
print("                  写字楼里写字间,写字间里程序员;  ")
print("                  程序人员写程序,又拿程序换酒钱。  ")
print("                  酒醒只在网上坐,酒醉还来网下眠;  ")
print("                  酒醉酒醒日复日,网上网下年复年。  ")
print("                  但愿老死电脑间,不愿鞠躬老板前;  ")
print("                  奔驰宝马贵者趣,公交自行程序员。  ")
print("                  别人笑我忒疯癫,我笑自己命太贱;  ")
print("                  不见满街漂亮妹,哪个归得程序员?")

示例二:使用函数的情况

# 定义一个函数,完成了独立输出"佛祖镇楼"的功能
def print_fozu():print("                            _ooOoo_  ")print("                           o8888888o  ")print("                           88  .  88  ")print("                           (| -_- |)  ")print("                            O\\ = /O  ")print("                        ____/`---'\\____  ")print("                      .   ' \\| |// `.  ")print("                       / \\||| : |||// \\  ")print("                     / _||||| -:- |||||- \\  ")print("                       | | \\\\\\ - /// | |  ")print("                     | \\_| ''\\---/'' | |  ")print("                      \\ .-\\__ `-` ___/-. /  ")print("                   ___`. .' /--.--\\ `. . __  ")print("                ."" '< `.___\\_<|>_/___.' >'"".  ")print("               | | : `- \\`.;`\\ _ /`;.`/ - ` : | |  ")print("                 \\ \\ `-. \\_ __\\ /__ _/ .-` / /  ")print("         ======`-.____`-.___\\_____/___.-`____.-'======  ")print("                            `=---='  ")print("  ")print("         .............................................  ")print("                  佛祖镇楼                  BUG辟易  ")print("          佛曰:  ")print("                  写字楼里写字间,写字间里程序员;  ")print("                  程序人员写程序,又拿程序换酒钱。  ")print("                  酒醒只在网上坐,酒醉还来网下眠;  ")print("                  酒醉酒醒日复日,网上网下年复年。  ")print("                  但愿老死电脑间,不愿鞠躬老板前;  ")print("                  奔驰宝马贵者趣,公交自行程序员。  ")print("                  别人笑我忒疯癫,我笑自己命太贱;  ")print("                  不见满街漂亮妹,哪个归得程序员?")# 调用2次函数,每次输出1个佛祖镇楼
print_fozu()
print_fozu()
函数分类

函数根据是否是自己编写可以分为两类

  • 别人已经写好拿来直接用的函数,成为包括Python内置函数或者第三方包中的函数,更省事
  • 开发者自己编写的函数(通常称为自定义函数);根据需要自己编写,更灵活

在整个函数相关知识学习中,我们主要以研究自定义函数为主,当自定义函数都弄明白了弄懂了,那么用别人的写好的函数就信手拈来了

 三.自定义函数

上面的知识我们知道,函数就是一个独立功能的代码块,想要用函数一定要掌握两块知识

  • 定义函数(即怎样制作函数)
  • 调用函数(即怎样使用函数)

下面我们就来研究函数的定义以及调用。

定义函数

定义函数的格式如下:

def 函数名(形参):函数体

说明:

  • 函数名:一定有,按照命名规则起个名字,注意Python中建议使用小写加下划线的方式,例如print_info而不用PrintInfo
  • 函数体:一定有,就是整个函数真正要执行的代码,注意函数体前面缩进四个空格
  • 形参:可有可无,专门用过来存储调用时传递给函数的数据用的

示例代码

下面定义一个函数,完成打印菜单的功能

def print_menu():print("-----------------------")print("        欢迎光临        ")print("数字1: 黄瓜炒肉")print("数字2: 冬瓜炒肉")print("数字3: 西瓜炒肉")print("数字4: 南瓜炒肉")print("数字5: 北瓜炒肉")print("-----------------------")

说明:

  • 函数名:print_menu
  • 函数体:第2~9行的代码
  • 形参:无

注意:定义了函数,这个函数不会被执行。就好比你发明了一个功能,这个功能不能自己用自己,必须等待别人使用才行,如果想让函数执行,就需要调用函数。

调用函数

通俗的讲:定义函数相当于打造了一个工具,调用函数相当于使用这个工具完成想要做的事情

调用函数的格式如下

函数名(实参)

说明:

  • 函数名:一定有,想要调用的函数的名字
  • 实参:可有可无,调用函数时给它传递的数据

注意:调用的函数的名字必须是先定义好的才能够调用,否则会失败

示例代码

# 定义了一个函数,实现打印菜单功能
def print_menu():print("-----------------------")print("        欢迎光临        ")print("数字1: 黄瓜炒肉")print("数字2: 冬瓜炒肉")print("数字3: 西瓜炒肉")print("数字4: 南瓜炒肉")print("数字5: 北瓜炒肉")print("-----------------------")# 调用函数
print_menu()运行结果:
-----------------------欢迎光临
数字1: 黄瓜炒肉
数字2: 冬瓜炒肉
数字3: 西瓜炒肉
数字4: 南瓜炒肉
数字5: 北瓜炒肉
-----------------------

说明:

  • 函数定义一定要在函数的调用之前,其原因:Python解释器在解析.py文件时会从文件的开头开始解析,会先遇到函数的定义,然后当遇到函数的调用时就知道它在哪,所以函数要先定义才能调用
pass关键字

如果一个函数,暂时不确定函数体的代码,可以用pass先占用位置,这样即没有语法错误,也能够让开发人员知道 这个函数功能没有实现,可以在后面进行编写

def 函数名():pass

示例:要定义4个函数,实现加减乘除的功能,但还不清楚具体功能怎样写,此时就可以用pass

# 定义了4个函数
def add_2_nums():passdef min_2_nums():passdef mult_2_nums():passdef div_2_nums():pass# 分别调用函数
add_2_nums()
min_2_nums()
mult_2_nums()
div_2_nums()

如果想清楚了具体的函数应该怎样实现,那么把pass删除,补上需要的代码即可

# 定义了4个函数
def add_2_nums():print("接下来要进行加法操作...")num1 = input("请输入第1个数:")num2 = input("请输入第2个数:")print("%s+%s=%d" % (num1, num2, int(num1) + int(num2)))def min_2_nums():print("接下来要进行减法操作...")num1 = input("请输入第1个数:")num2 = input("请输入第2个数:")print("%s-%s=%d" % (num1, num2, int(num1) - int(num2)))def mult_2_nums():print("接下来要进行乘法操作...")num1 = input("请输入第1个数:")num2 = input("请输入第2个数:")print("%s*%s=%d" % (num1, num2, int(num1) * int(num2)))def div_2_nums():print("接下来要进行除法操作...")num1 = input("请输入第1个数:")num2 = input("请输入第2个数:")print("%s/%s=%d" % (num1, num2, int(num1) / int(num2)))# 分别调用函数
add_2_nums()
min_2_nums()
mult_2_nums()
div_2_nums()

注意:Python代码规范中提到,定了多个函数,那么函数与函数之间空两行

定义一次执行多次

一个函数可以进行多次调用,每次调用函数时,函数都会从头开始执行,当这个函数中的代码执行完毕后,意味着调用结束了

def test():num = 100num += 1print("在test函数中num=%d" % num)test()
test()运行结果:在test函数中num=101
在test函数中num=101

说明:

  • 第7行调用了第一次test函数,当test函数结束后num为101
  • 第8行调用了第二次test函数,依然会从test函数的开头开始执行,所以结果依然是101

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/83932.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/83932.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Kotlin开发后端服务的核心方法

一、开发步骤 选择框架 Kotlin后端开发常用框架包括Spring Boot、Ktor和Micronaut。Spring Boot生态成熟&#xff0c;适合企业级应用&#xff1b;Ktor轻量且协程友好&#xff0c;适合高性能异步服务&#xff1b;Micronaut以低内存占用和快速启动见长。 搭建项目结构 通过Grad…

java面试总结-20250616

题目1: 求一个int类型正整数二进制中最高位1的位置&#xff1f; 比如10&#xff0c;二进制位1010&#xff0c;最高位1所在位置位4。 解体思路&#xff1a; 使用高位扩散&#xff0c;将1010扩散位1111使用二分法&#xff0c;计算32位二进制中1111前面0的位数n&#xff1b;结果…

Black自动格式化工具

文章目录 一、Black自动格式化工具二、格式化行为的核心内容1. 统一缩进和空格规则2. 括号换行&#xff1a;一致的多行结构展开3. 字符串风格统一4. 函数/类定义中的空行规则5. import 排序&#xff08;建议搭配 isort&#xff09;6. 注释不动、换行优雅7. 可配置项极少&#x…

项目拓展-简易SQL监控,P6SPY拦截所有jdbc连接并打印执行SQL

介绍一下P6spy驱动 p6spy 是一款开源的数据库监控框架&#xff0c;主要用于 拦截和记录应用程序与数据库之间的所有交互&#xff08;如 SQL 语句、参数、执行时间等&#xff09; 它通过包装现有的 JDBC 驱动&#xff08;如 MySQL JDBC 驱动&#xff09;&#xff0c;在不修改业…

洛谷B3951 [GESP样题 五级] 小杨的队列

题目描述 小杨的班级里共有 N N N 名同学&#xff0c;学号从 0 0 0 至 N − 1 N-1 N−1。某节课上&#xff0c;老师要求同学们进行列队。具体来说&#xff0c;老师会依次点名 M M M 名同学&#xff0c;让他们加入队伍。每名新入队的同学需要先站到队伍末尾&#xff08;刚开…

Java编程之外观模式

前言 想象你要去一家很复杂的餐厅吃饭&#xff0c;但不想自己点菜、排队、找位置&#xff0c;也不想管厨房、洗碗、送餐这些后端流程。你只需要告诉餐厅服务员“我要一份牛排套餐”&#xff0c;然后坐等就好。这个服务员&#xff0c;就是外观模式&#xff08;Facade Pattern&a…

告别 Java 开发困境!飞算 JavaAI 开发助手开启智能编程新时代

在 Java 开发的世界里&#xff0c;需求不明确、加班写重复代码、被 BUG 搞得焦头烂额&#xff0c;是许多开发者难以摆脱的 “三座大山”。需求文档模糊不清&#xff0c;让开发者在项目起始阶段就陷入迷茫&#xff1b;大量重复性的代码编写工作&#xff0c;不仅消耗时间和精力&a…

Node.js 中两种模块导出方式区别

两种模块到处方式 exports.xxx ... module.exports ... 1. exports.xxx ... exports 是 module.exports 的一个引用&#xff08;快捷方式&#xff09;。 当你写 exports.foo function() {}&#xff0c;实际上就是给 module.exports 对象添加了一个 foo 属性。 这种方式…

电脑出问题了,无网络环境下一键快速重装系统

在电脑使用过程中&#xff0c;系统故障、卡顿、崩溃等问题屡见不鲜。面对这些情况&#xff0c;重装系统往往是解决问题的最有效手段之一。然而对于刚接触计算机操作的新用户来说&#xff0c;如何安全、稳定地完成系统重装&#xff0c;仍是一个颇具挑战的任务。 这一款专为新手…

基于区块链的去中心化身份验证系统:原理、实现与应用

前言 在数字化时代&#xff0c;身份验证是网络安全和隐私保护的核心环节。传统的身份验证系统依赖于中心化的机构&#xff0c;如政府、银行或互联网服务提供商&#xff0c;这些机构存储和管理用户的个人信息。然而&#xff0c;中心化系统存在诸多问题&#xff0c;如数据泄露风险…

React forwardRef 与 useImperativeHandle 深度解析

在React开发中&#xff0c;组件间的通信是一个核心话题。虽然props和state能够处理大部分场景&#xff0c;但有时我们需要更直接的方式来操作子组件。今天我们来深入探讨两个强大的React Hook&#xff1a;forwardRef和useImperativeHandle。 forwardRef&#xff1a;传递引用的…

KingbaseES在线体验平台深度测评:基于MCP接口管理的Oracle风格SQL实战

文章目录 一、平台环境与准备二、引导体验1.检查数据库版本及服务状态 三、建库与建表1. 建库&#xff08;KingbaseES中通常无需显式建库&#xff0c;此处以创建schema模拟&#xff09;2. 建表 四、查库与数据操作测试1. 查库&#xff08;确认表结构&#xff09;2. 新增数据3. …

echarts开发 | 数据可视化 -- 第三篇 echart进阶配置项 数据集

文章目录 一、概念二、回顾在系列(series)中设置数据三、在数据集中设置数据3.1 数据集(dataset) 基础3.2 二维数组数据(默认) 四、把数据集(dataset) 的行或列 映射为 序列 (series)五、维度(dimension)六、数据到图形的映射 &#xff08;series.encode&#xff09; 一、概念 …

如何科学测算AI业务场景所需算力服务器?——以Qwen3 32B模型与海光K100为例

在人工智能&#xff08;AI&#xff09;技术飞速发展的今天&#xff0c;越来越多企业开始部署大模型应用&#xff0c;如智能问答、文本生成、知识图谱构建等。但如何合理配置硬件资源&#xff0c;既满足业务需求又避免资源浪费&#xff0c;是每个项目实施前必须解决的问题。 本…

渗透实战:利用XSS获取cookie和密码

操作均来自靶场&#xff0c;切勿用于未授权渗透测试&#xff01; Lab 21&#xff1a;将反射型 XSS 注入带有尖括号、单引号、双引号、反斜杠和反引号的 Unicode 转义模板文字中 输入的任何单引号双引号尖括号都会被 unicode 编码 直接换另一种代码执行方式${alert(1)}&#…

Eureka、Nacos、Zookeeper 优雅上下线机制

✅ 三大注册中心优雅上下线机制对比 维度EurekaNacosZookeeper注册方式客户端注册 心跳维持客户端注册 心跳维持客户端创建临时节点服务可用状态控制STARTING、UP、DOWN、OUT_OF_SERVICEUP、DOWN、STARTING 等无显式状态标识&#xff0c;靠节点存在与否判定上线控制方式通过…

Flink与Kubernetes集成

引言 在当今大数据与云计算蓬勃发展的时代&#xff0c;容器编排与流处理技术成为企业数据处理架构的关键支柱。Kubernetes作为容器编排系统的行业标准&#xff0c;能够高效自动化地部署、扩展和管理计算机应用程序&#xff1b;Apache Flink则是流处理和批处理领域的佼佼者&…

第五节:Vben Admin 最新 v5.0 (vben5) 快速入门 - 角色管理模块(上)

Vben5 系列文章目录 💻 基础篇 ✅ 第一节:Vben Admin 最新 v5.0 (vben5) 快速入门 ✅ 第二节:Vben Admin 最新 v5.0 (vben5) 快速入门 - Python Flask 后端开发详解(附源码) ✅ 第三节:Vben Admin 最新 v5.0 (vben5) 快速入门 - 对接后端登录接口(上) ✅ 第四节:Vben Ad…

实施企业预算管理的企微CRM系统技巧:从成本控制到价值创造

一、企微CRM管理系统为何成为预算管理新引擎? 官方数据显示&#xff0c;接入企微CRM系统的企业平均降低客户管理成本28%&#xff0c;预算执行效率提升40%。这源于企微CRM管理软件的三大独特优势&#xff1a; 原生集成能力&#xff1a;与企业微信通讯录、会话存档无缝对接&…

WebFuture:手机版页面部分区域报错:未将对象引用设置到对象的实例

问题描述&#xff1a; 手机版页面部分区域报错&#xff1a;未将对象引用设置到对象的实例&#xff0c;PC板访问正常。 问题分析&#xff1a; 对比PC和手机页面模板&#xff0c;调用代码有以下差异&#xff0c;手机版模板没兼容null值&#xff0c;简介为空导致报错。 解决方法…