【Python】函数(纯干货版)

embedded/2024/10/18 12:28:38/

目录

什么是函数

函数定义

函数的文档说明

局部变量和全局变量

综合案例:模拟实现ATM界面


什么是函数

函数是组织好的,可重复使用的,用于实现特定功能的代码段,将功能封装在函数内,可供随时随地重复利用,提高代码的复用性,减少重复代码,提高开发效率。

函数定义

函数定义的一般格式为

通过def这个关键字来作为定义函数的标识,return是需要缩进的。

注:① 参数如不需要,可以省略

② 返回值如不需要,可以省略

③ 函数必须先定义后使用

比如我们要自定义一个用来计算字符串长度的函数,代码如下

运行结果为字符串hello的长度为5

如果函数没有使用return返回数据,仍然有返回值,其返回值是一个特殊的字面量None,类型是NoneType类型。None在作为判断条件的时候为假。在定义一些变量的时候如果我们刚上来不知道初始化成什么也可以先初始化成None

函数的文档说明

函数的文档说明就是使用注释对我们自定义的函数进行一系列的说明,比如函数的功能,参数代表的意义,既然是注释,理论上来说我们怎么写都可以,但是Python中提供了一种比较规范的写法,当我们输入多行注释的操作:三个引号之后,就会自动出现这样的一个格式

我们便可以对应的输入注释了

局部变量和全局变量

在某个函数内部定义的变量被称为局部变量,这个变量的作用域就是他所在的函数内部,出了这个函数这个变量也就不复存在,自然也就无法访问到这个变量。

全局变量就是在函数外边定义的变量,全局变量既可以在函数外部访问,也可以在函数内部访问,但是要注意,直接在函数内部对全局变量进行赋值是不会改变全局变量的值的。比如有这样的代码

num是一个全局变量,在func1函数中打印了num的值,然后再func2函数中看起来是改变了num的值,然后打印了,最后在函数外边再次打印num的值,发现结果居然是20 50 20,也就是说在func2中并没有完成对num值的修改,这是因为局部变量的优先级要高于全局变量,因此编译器认为我们是在func2中新定义了一个名为num的局部变量并给其赋值为50,随后打印,这个局部变量和外边的全局变量除了名字相同之外毫无关系。如果想要在函数内部改变全局变量,应该使用关键字global,global可以让我们在函数内定义的变量变成全局变量。如图

此时的运行结果就变成了20 50 50,意思在func2中先通过golbal num声明num是一个全局变量,之后对这个全局变量进行赋值。不能直接写成global num=50,虽然看起来更加简洁,但是这是语法不允许的。

综合案例:模拟实现ATM界面

要求:

1.程序启动后要求输入客户姓名

2.查询余额、存款、取款后都会返回主菜单

3.存款、取款后,都应显示一下当前余额

4.客户选择退出或输入错误,程序会退出,否则一直运行

下面是部分功能的运行结果


http://www.ppmy.cn/embedded/4009.html

相关文章

【数据结构】单链表经典算法题的巧妙解题思路

目录 题目 1.移除链表元素 2.反转链表 3.链表的中间节点 4.合并两个有序链表 5.环形链表的约瑟夫问题 解析 题目1:创建新链表 题目2:巧用三个指针 题目3:快慢指针 题目4:哨兵位节点 题目5:环形链表 介绍完了…

算法 第43天 动态规划5

1049 最后一块石头的重量II 有一堆石头&#xff0c;用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c;且 x < y。那么粉碎的可能结果如…

使用【node】创建本地接口

在前端开发的过程中&#xff0c;接口相关的信息一般是由后端处理好返回给前端&#xff0c;但是有时候后端不在的时候想自己写个接口进行测试是非常麻烦的。 node是前端一个不错的写接口工具 一 初始化文件 1 在新建一个空的文件夹node 进入空文件夹在&#xff0c;文件夹的地…

HTML中div/span标签、音频标签、视频标签与特殊字符

目录 div/span标签 音频标签 视频标签 特殊字符 div/span标签 在HTML中&#xff0c;<div></div>和<span></span>是没有语义的&#xff0c;可以将两个标签当做两个盒子&#xff0c;里面可以容纳内容 两个标签有以下两个特点&#xff1a; 1. <…

c++中什么叫做窄式转换(narrowing conversions)以及窄式转换解决方案

c中什么叫做窄式转换(narrowing conversions)以及窄式转换解决方案 什么叫做窄式转换(narrowing conversions) 窄化转换&#xff08;narrowing conversion&#xff09;是指将一个值转换为另一种类型&#xff0c;但转换过程中丢失了信息或超出了目标类型的表示范围的情况。在C…

2024-14.python前端+Django

第四篇 web前端 第1章 、Web的基本概念 前端基础总共分为三部分&#xff1a;html、css和js。 1.3、HTTP协议 1.3.1 、http协议简介 HTTP协议是Hyper Text Transfer Protocol&#xff08;超文本传输协议&#xff09;的缩写,是用于万维网&#xff08;WWW:World Wide Web &am…

Jenkins用maven风格build报错解决过程记录

1、Jenkins2.453新建项目&#xff0c;构建风格选的maven 2、自由风格构建部署没有任何问题&#xff0c;但是maven风格build一直失败&#xff0c;报错如下图 3、解决方案&#xff1a;在系统管理–系统配置–Maven项目配置&#xff0c;删除全局MAVEN_OPT的路径信息&#xff0c;…

设计模式-代理模式(Proxy)

1. 概念 代理模式&#xff08;Proxy Pattern&#xff09;是程序设计中的一种结构型设计模式。它为一个对象提供一个代理对象&#xff0c;并由代理对象控制对该对象的访问。 2. 原理结构图 抽象角色&#xff08;Subject&#xff09;&#xff1a;这是一个接口或抽象类&#xff0…