【Python】函数基础(纯干货版)

目录

什么是函数

函数定义

函数的文档说明

局部变量和全局变量

综合案例:模拟实现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.mfbz.cn/a/559770.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

BTP连接cloud connector中配置的SAP

登录地址 登录之后可以看到我们已经配置成功的后端系统SAP。 从cloud connector中获取location ID ,然后在BTP中配置Destination 选择目标标签页,点击‘新建目标’,如下图: 新建连接 暂时不知道错误原因 创建目标-HTTP  新建目标&…

(五)STM32F407 cubemx定时器PWM驱动舵机

这篇文章主要是个人的学习经验,想分享出来供大家提供思路,如果其中有不足之处请批评指正哈。 废话不多说直接开始主题,本人是基于STM32F407VET6芯片,但是意在你看懂这篇文章后,不管是F1,F4,H7等一系列系统定时器PWM配置…

动态IP与静态IP的区别,你选对了吗?

在互联网世界中,IP地址是每台设备在网络上的唯一标识。这些地址可以是动态的,也可以是静态的。对于非专业人士来说,理解这两者之间的区别可能会有些困难。本文旨在深入探讨动态IP和静态IP的主要差异,帮助读者根据自己的需求做出明…

华为sr-mpls policy配置案例

SR-MPLS POLICY在ensp上面做不了,这是官方上的配置

CSS基础之伪元素选择器(如果想知道CSS的伪元素选择器知识点,那么只看这一篇就足够了!)

前言:我们已经知道了在CSS中,选择器有基本选择器、复合选择器、伪类选择器、那么选择器学习完了吗?显然是没有的,这篇文章讲解最后一种选择器——伪元素选择器。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我…

爱上JDK源码阅读-Integer

知识点 自动装箱和拆箱IntegerCache机制toString()实现算法优化 从一道面试题开始 Integer a 100; int b 100; if (a b) {System.out.println("a b"); } else {System.out.println("a ! b"); }聪明的你应该马上可以知道答案了,输出就是 …

【SQL】DISTINCT GROUP BY

找到所有办公室里的所有角色(包含没有雇员的),并做唯一输出(DISTINCT) 用DISTINCT : SELECT DISTINCT B.Building_name,E.Role FROM Buildings B LEFT JOIN Employees EON B.Building_name E.Building需要找到的结果:所有办公室名字&#…

C# 图像旋转一定角度后,对应坐标怎么计算?

原理分析 要计算图像内坐标在旋转一定角度后的新坐标,可以使用二维空间中的点旋转公式。假设图像的中心点(即旋转中心)为 (Cx, Cy),通常对于正方形图像而言,中心点坐标为 (Width / 2, Height / 2)。给定原坐标点 (X, …

10:HAL---高级定时器

前言: 高级定时器具有通用定时器的所有功能,我们在这里面只说它不一样的地方。(通用定时器不具备的功能) 一:高级定时器 1:介绍 2:重复计数器 在我们普通的定时器中当CNTCCR时直接发生溢出。然…

阿里二面凉了,难蹦。。。

分享一位同学阿里巴巴的后端面经,共有 2 面,第一面很顺利过了,可惜挂在第二面。 这两面的知识点范围,我帮大家罗列一下: 网络:TCP、HTTP mysql:索引应用、索引结构、隔离级别、最左匹配 redis…

图小灵的多线程

进程 简而言之,一个运行的程序就叫作进程 管理进程,要先将进程使用类/结构体,表示各个属性 为了后续增删改查,需要将进程通过数据结构串联起来 系统中有一个结构体专门用来表示进程的属性,叫作PCB(进程控制块) 一个进程使用一个或者多个PCB来表示 系统会使用类似于双向链…

pycharm-git 配置(1)

1.安装git2.pycharm 中配置git 插件 弹出Git版本号,即配置成功。3.创建本地仓库 VCS->VCS operations->create repository->设置本地目录 左下角可以看到git本地仓库git可以看到push,commit。 4.配置远方仓库,此时确保git上是有这个项目…

在开发板上运行spidev_test报错:“./spidev_test: line 2: h: not found”

问题 今天交叉编译spidev_test后,放到开发板上运行报错:“./spidev_test: line 2: h: not found” 原因 编译方式不同,生成的是64为程序,应该生成32位的程序。 解决办法: 修改为直接用命令编译,生成…

酷开科技抓住“客厅经济”发展的机遇,不断对酷开系统升级赋能

酷开科技抓住“客厅经济”发展的机遇,不断对酷开系统升级赋能,打造新的生活场景,满足消费者的不同生活需求,酷开科技的产品和服务让消费者能够在家庭空间中享受到更加智能、便捷和温馨的时光。同样凭借更加包容、开放的生态体验&a…

贪吃蛇项目实战——学习详解

前言:贪吃蛇是一个经典的游戏, 本节将使用c语言实现一个简易的的贪吃蛇小游戏。 本节内容适合已经学完c语言还有数据结构链表的友友们。 我们要实现的贪吃蛇是在控制台进行游戏的。 它运行起来是这样的: 贪吃蛇 那么, 为了实现这个小游戏。 我…

添加Redis缓存

1.缓存查询 在service层Impl文件中,进行查询时优先向Redis中查数据,查到就查到了,没有查到向mysql数据库中查,查到之后不先返回,而是先将数据存到数据库(缓存),在再返回数据。 1.1 代码实现(缓…

鸿蒙端云一体化开发--调用云函数--适合小白体制

如何实现在端侧调用云函数? 观看前,友情提示: 不知道《如何一键创建端云一体化模板》的小白同学,请看: 鸿蒙端云一体化开发--开发云函数--适合小白体制-CSDN博客 实现方法: 第一步:添加依赖 …

98%的企业与被入侵的第三方有关联,如何有效的防止入侵

技术供应链漏洞使威胁参与者能够以最小的努力扩展其运营,在导致第三方入侵的外部B2B关系中,75%涉及软件或其他技术产品和服务,其余25%的第三方违规涉及非技术产品或服务。 入侵通常需要几个月或更长的时间才能公之于众,受害者可能…

【Leetcode】string类刷题

🔥个人主页:Quitecoder 🔥专栏:Leetcode刷题 目录 1.仅反转字母2.字符串中第一个唯一字符3.验证回文串4.字符串相加5.反转字符串I I6.反转字符串中的单词III7.字符串相乘8.把字符串转换为整数 1.仅反转字母 题目链接:…

C++:模板详解

模板详解 1.函数模板1.概念2.语法3.原理4.实例化1.隐式实例化2.显示实例化 5.匹配原则 2.类模板1.格式2.实例化 3.非类型模板参数注意点 4.特化1.概念2.函数模板特化1.前提2.语法说明3.示例 3.类模板特化1.全特化2.偏特化/半特化3.选择顺序 4.按需实例化 5.模板的分离编译1.分离…