15天零基础学会python全套教程与练习(网课可以看B站“黑马程序员“) 第5天
Python函数
函数:是组织好的,可重复使用的,用来实现特定功能的代码段

为什么随时都可以使用len()统计长度?
因为,len()是Python内置的函数:
1,提前写好的
2,可以重复使用的
3,实现统计长度这一特定功能的代码段
之前学过的:input(),print(),str(),int()等都是Python的内置函数
案例需求:不适用内置函数len(),完成字符串长度的计算
不使用函数


使用函数



使用函数的好处:
1,将功能封装在函数里,可以随时重复利用
2,提高代码的复用性,减少重复代码,提高开发效率
函数的定义:
def 函数名(传入参数):
函数体
return 返回值


注意:定义了函数之后,一定要调用函数
函数的调用:函数名(参数)
注意事项:
1,参数如不需要,可以省略
2,返回值如不需要,可以省略
3,函数必须先定义后使用
练习案例:自动查核酸
定义一个函数,函数名任意,要求调用函数后可以输出如下欢迎语:
欢迎来到黑马程序员!
请出示您的健康码以及72小时核酸证明!

\n可以使同一行的语句分行

函数的传入参数
传入参数的功能:在函数进行计算的时候,接收外部(调用时)提供的数据
基于函数的定义语法:

有如下用于计算两数相加的函数:

但是这个函数的功能非常有限,只能计算1+2
但是如下函数可以计算用户指定的两数相加



语法解析:
1,函数定义中,提供的x和y,称之为:形式参数(形参),表示函数声明将要使用2个参数
* 参数之间使用逗号进行分隔
2,函数调用中,提供的5和6,称之为:实际参数(实参),表示函数执行时真正使用的参数值
* 传入的时候,按照顺序传入数据,使用逗号分隔
注意:传入参数的数量是不受限制的
* 可以不使用参数
* 也可以仅使用任意N个参数


练习案例:升级版自动查核酸
定义一个函数,名称任意,并接受一个参数传入(数字类型,表示体温)
在函数内进行体温判断(正常范围:小于等于37.5度),并输出如下内容:
欢迎来到黑马程序员!请出示您的健康码以及72小时核算证明,并配合测量体温!
体温测量中,您的体温是:37.3度,体温正常请进!
欢迎来到黑马程序员!请出示您的健康码以及72小时核算证明,并配合测量体温!
体温测量中,您的体温是:39.3度,需要隔离!


函数返回值
程序中的返回值:

如图代码,定义两数相加的函数功能。完成功能后,会将相加的结果返回给函数调用者。
所以,变量r接收到了函数的的执行结果
所谓的“返回值”,就是程序中函数完成事情后,最后给调用者的结果

注意:return后面的代码都不会执行,如上图的“我完事了”就不会执行

None类型
函数即使没有使用return语句返回数据,也有返回值
Python中有一个特殊的字面量:None,其类型是:<class 'NoneType'>
无返回值的函数,实际上返回了:None这个字面量
那么None是什么意思呢?
None表示空的,无实际意义的意思
函数返回的None,就表示,这个函数没有返回声明有意义的的内容,也就是返回了空的意思

None可以主动使用return返回,效果等同于不写return语句:
* 无return语句的函数返回值


* 主动返回None的函数

None类型的应用场景
None作为一个特殊的字面量,用于表示:空,无意义,其有非常多的应用场景。
1,用在函数无返回值上
2,用在if 判断上
* 在if判断中,None等同于False
*一般用于在函数中主动返回None,配合if判断做相关处理


3,用于声明无内容的变量上
* 定义变量,但暂时不需要变量有具体值,可以用None来代替


函数的说明文档
函数是纯代码语言,一行行去理解代码,效率低下
可以给函数添加说明文档,辅助理解函数的作用

通过多行注释的形式,对函数进行解释说明
* 内容应写在函数体之前
* :param用于解释参数
* :return用于解释返回值


在PyCharm编写代码时,可以通过鼠标悬停,查看调用函数的说明文档

函数的嵌套调用:在一个函数里面又调用了另外一个函数


执行过程:

如果在函数A中,调用了另外一个函数B,那么先把函数B中的任务都执行完毕后才会回到上次函数A执行的位置
变量的作用域:变量的作用范围(变量在哪里可用,在哪里不可用)
主要分为两类:局部变量和全局变量
所谓局部变量,就是定义在函数体内部的变量,即只在函数体内部生效



变量a是定义在testA函数内部的变量,在函数外部访问则会立即报错


全局变量:指的是在函数体内,外部都能生效的变量
如果有一个数据,在函数A和函数B中都要使用,则需将这个数据存储在一个全局变量里



global关键字
要将testB函数修改为变量num的值为200,该怎么修改程序?

testB函数内部的num = 200是定义了一个局部变量
在函数内修改全局变量

外面的值没有发生改变,还是200

global关键字,在函数内声明变量为全局变量

外面的值发生改变了,变成500了

综合案例:黑马ATM
1,定义一个全局变量:money,用来记录银行卡余额(默认5000000)
2,定义一个局部变量:name,用来记录客户姓名(启动程序时输入)
3,定义如下的函数:
* 查询余额函数
* 存款函数
* 取款函数
* 主菜单函数
4,要求:
* 程序启动后要求输入客户姓名
* 查询余额,存款,取款后都会返回主菜单
* 存款,取款后,都应显示一下当前余额
* 客户选择退出或输入错误,程序会退出,否则一直运行





更多推荐



所有评论(0)