|
目录1、函数介绍2、函数的定义3、函数的传入参数4、函数的返回值5、函数说明文档6、函数的嵌套调用7、变量的作用域1、函数介绍函数是组织好的,可重复使用的,用来实现特定功能的代码段。name="zhangsan";length=len(name);print(length)之所以可以随时调用len()(实现统计长度)函数,是因为,它是python内置的函数(提前写好的)。不使用len()函数如何实现统计字符串长度。str="python";count=0;foriinstr:count+=1;print(count)#可以使用函数,来优化这个过程defmy_len(data):count=0;foriindata:count+=1;print(f"字符串{data}的长度为{count}")my_len(str)函数可以得到一个针对特定需求、可供重复利用的代码段提高程序的复用性,减少重复性代码、提高开发效率。 2、函数的定义函数的定义:def函数名(传入参数): 函数体 return返回值函数调用:函数名(参数) #简单定义一个函数defmy_hi():print("hello")my_hi()注意事项:1、参数如果不需要,可以省略2、返回值如果不需要,可以省略3、函数必须限定以后使用 3、函数的传入参数传入参数的功能是:在函数进行计算的时候,接受外部(调用时)提供的数据。defadd1():result=1+2;print(f"{result}")add1()#add1()功能十分局限,只能计算1+2,但我们如果给函数增加两个传入参数,从而让用户指定加法计算defadd2(a,b):result=a+b;print(f"{a}+{b}={a+b}");add2(3,4)1、函数定义中,提供的a和b,称之为:形式参数(形参),表示函数声明将要使用两个参数(参数之间使用逗号进行分割)2、函数调用中,提供的5和6,称之为:实际参数(实参),表示函数执行时真正使用的参数值(传入的时候,按照顺序传入数据,使用逗号分隔)传入的参数数量是不受限制的(可以不使用参数,也可以使用任意N个参数) 4、函数的返回值程序中的返回值:#定义两数相加的函数功能。完成功能后,会将相加的结果返回给函数调用者,所以,变量r接收到了函数的执行结果。defadd(a,b):result=a+b;returnresult;r=add(3,4)print(r)所谓“返回值”,就是程序中函数完成事情之后,最后给调用者的结果。语法格式如下:def函数名(传入参数): 函数体 return返回值变量=函数(参数)注意:函数体在遇到return后就结束了,所以写在return后的代码不会执行。函数如果没有使用return语句返回数据,函数的返回值为:NoneNone是一个特殊的字面量,其类型是:无返回值的函数,实际上就是返回了:None这个字面量。None表示:空的、无实际意义的意思。函数返回的None,就表示,这个函数没有返回什么有意义的内容,返回值为空的意思。 defsay_hello():print("hello")#Noneresult=say_hello();print(result)print(f"返回类型为{type(result)}")None类型的应用场景:None作为一个特殊的字面量,用于表示:空、无意义,其有非常多的应用场景。1、用在函数无返回值上。2、用在 if判断上:在if判断中,None等同于False,一般用于在函数中主动返回None,配合if判断做相关处理。defcheck_age(age):ifage>18:return"SUCCESS";else:returnNoneresult=check_age(14)ifnotresult:#进入if表明result是None值print("未满18岁")3、用于声明无内容的变量上:定义变量,但暂时不需要变量有具体值,可以用None来代替。name=None5、函数说明文档函数是纯代码语言,想要理解其含义,就要一行行的去阅读理解代码,效率比较低。我们可以给函数添加说明文档,辅助理解函数的作用。语法如下:deffunc(x,y):"""函数说明:paramx:形参x的说明:paramy:形参y的说明:return:返回值的说明"""函数体return返回值 通过多行注释,对函数进行说明解释(内容要在函数体前)defadd(x,y):"""add函数可以接受两个参数,对两数进行相加:paramx:形参x表示相加的其中一个数字:paramy:形参y表示相加的另一个数字:return:返回两数相加的结果"""result=x+y;print(f"{x}+{y}={x+y}")returnresult我们还可以通过鼠标悬停的方式来查看说明文档: 可以帮助更好的理解函数。6、函数的嵌套调用所谓函数嵌套调用指的是一个函数里面又调用了另外一个函数。deffunc_b():print(2)deffunc_a():print(1)func_b()func_a()如果函数a中,调用了另外一个函数b,那么先把函数b中的任务都执行完毕之后才会回到上次函数a执行的位置。 7、变量的作用域变量的作用域指的是变量的作用范围(变量在哪里可用,在哪里不可用)主要分为两类:局部变量和全局变量所谓局部变量是定义在函数体内部的变量,即只在函数体内部生效。deftest():num=100print(num)#报错:name'num'isnotdefined变量num是定义在“test”函数内部的变量,在函数外部访问则立即报错局部变量的作用:在函数体内部,临时保存数据,当函数调用完成后,则立即销毁局部变量。全局变量指的是在函数体内、外都能生效的变量deftestA():print(num)deftestB():print(num)testA()#100testB()#100 global关键字:对于上一个代码如果将“testB”函数需要修改变量num的值为200,如何修改程序?num=100deftestA():print(num)deftestB():globalnumnum=200print(num)testA()#100testB()#200print(num)#200#案例:农业银行ATM:存款、取款、查询余额函数#d定义全局变量money=50000name=None#要求客户输出姓名name=input("请输入您的姓名:")#定义查询函数defquery(show_header):ifshow_header:print("---------查询余额------------")print(f"{name}您好!您的余额剩余{money}")#定义存款函数defsave(num):globalmoneyprint("---------存款------------")money=money+numprint(f"{name}您存款{num}元成功")query(False)#定义取款函数defget(num):globalmoneyprint("---------取款------------")ifmoney!=0:money=money-numprint(f"{name}您取款{num}元成功")query(False)else:print("您好!您的帐户余额为0,请及时充值")#定义主菜单函数defmain():print("----------主菜单-----------")print(f"你好!欢迎来到农业银行ATM,请选择:")print("查询余额输入\t[1]")print("存款输入\t\t[2]")print("取款输入\t\t[3]")print("退出输入\t\t[4]")returninput("请输入您的选择:")#无限循环,确保不会退出whileTrue:key_board=main()ifkey_board=="1":query(True)continue#通过continue继续下一次循环elifkey_board=="2":num=int(input("您要存款的金额:"))save(num)continueelifkey_board=="3":num=int(input("您要取款的金额:"))get(num)continueelse:print("退出系统!")break
|
|