学习目标
- 了解魔法积木的使用——自定义函数
- 了解魔法积木的结果反馈——自定义函数返回值
- 了解魔法积木的原料传递——自定义函数传参
- 了解魔法积木的类型分类——类与对象
推荐
1.《备受好评的看得懂的C语言入门教程》
目录
第一篇:《假如编程是魔法之零基础看得懂的Python入门教程 》——(一)既然你选择了这系列教程那么我就要让你听得懂
第二篇:《假如编程是魔法之零基础看得懂的Python入门教程 》——(二)魔法实习生第一步了解魔杖的使用
第三篇:《假如编程是魔法之零基础看得懂的Python入门教程 》——(三)使用初始魔法跟编程魔法世界打个招呼吧
第四篇:《假如编程是魔法之零基础看得懂的Python入门教程 》——(四)了解魔法百宝箱列表、字典及基本数据类型
第五篇:《假如编程是魔法之零基础看得懂的Python入门教程 》——(五)我的魔法竟然有了一丝逻辑
第六篇:《假如编程是魔法之零基础看得懂的Python入门教程 》——(六)精简魔法更强大
本系列教程将会以一种“魔法世界”的形式编写,欢迎各位支持。
欢迎大家关注公众号,公众号每满1024及1024倍数则会抽奖赠送机械键盘一份+IT书籍2份哟~并且公众号会更快更新哟。
一、了解魔法世界中的积木
我们通过之前章节的学习了解了一些基本的python编程,但是在我们编写代码过多的时候,将会导致代码杂乱,并且整体逻辑不便于查看,出现一个错误则需要通过较多的流程去排错。那么我们的代码有一部分是通过积木搭建的方式组合成代码,弱一部分出错,就会很快的定位错误在哪一个积木块里面,这时就只需要修改那个积木内的代码就可以修正错误。这样做是不是就可以极的使我们的代码结构清晰,并且易于修改错误了呢?答案当然是对的。
1.1 了解自定义函数的编写
我们在编写一个点餐系统的时候,若经常会提示菜单栏,让用户进行选择。若用户进入了其它页面,再返回首页的时候又需要出新菜单的提示,那我们又需要重新输出一次。这样是不是就特别麻烦?我们可以看看以下示例:
print('请选择你要吃的食物序号进去付款')
print('1.宫保鸡丁')
print('2.香辣鸡翅')
print('3.糯米饭')
print('3.饺子')
print('4.沙县经典三件套')
print('5.五花八门大丸子')c=int(input('请输入菜单序号:'))
if c:print('正在连接付款...')b=input('任意键返回...')if b:print('正在返回...')print('请选择你要吃的食物序号进去付款')
print('1.宫保鸡丁')
print('2.香辣鸡翅')
print('3.糯米饭')
print('3.饺子')
print('4.沙县经典三件套')
print('5.五花八门大丸子')
以上示例只是作为模拟当时情景,代码不作为功能的参考。代码最开始,提示了菜单内容,代码如下:
print('请选择你要吃的食物序号进去付款')
print('1.宫保鸡丁')
print('2.香辣鸡翅')
print('3.糯米饭')
print('3.饺子')
print('4.沙县经典三件套')
print('5.五花八门大丸子')
提示内容后,接收用户输入一个值。用户输入的值,在此输入任意值均可,判断代码的编写:
if c:
以上代码对c变量进行判断,只要不是为空,那么任意数字都行。在python中,空的值最终判断为False假,若有值都将为True真。随后模拟连接支付系统,长时间则随意输入一个值确定后返回:
c=int(input('请输入菜单序号:'))
if c:print('正在连接付款...')b=input('任意键返回...')if b:print('正在返回...')
接着再重新将菜单栏输出。这是的菜单栏明显是重复的代码,使用了两次;这样的代码看起来是不是太繁琐了?简直从视觉上就增加了难度。不过不用担心,python提供了自定义函数让我们解决这个问题。自定义函数表示自己可以定义的功能块,这个功能块可以重复使用,这个功能块可以有多条代码组成。
现在我们将菜单栏定义成一个自定义函数。定义成一个自定义函数的语法为def开头,后接一个空格;空格后接一串字符表示该功能块的名称;随后一堆圆括号,在圆括号后打上一个冒号。代码如下:
def caidan():
以上代码使用def开头,表示我要编写一个自定义函数,随后接上名称caidan,之后接一堆圆括号,一个冒号结束;接下来需要在函数中编写函数的代码,此时我们需要统一缩进格式,至少有一个:
def caidan():#这里写caidan这个功能的代码#这里写caidan这个功能的代码
我们可以直接把菜单提示的代码全部复制黏贴到这个自定义函数caidan中:
def caidan():
print('请选择你要吃的食物序号进去付款')
print('1.宫保鸡丁')
print('2.香辣鸡翅')
print('3.糯米饭')
print('3.饺子')
print('4.沙县经典三件套')
print('5.五花八门大丸子')
那如上编写对了吗?错了!一定要记得自定义函数后,你需要编写该函数的功能一定要紧接着在函数名下使用缩进表示结构;所以该代码的正确写法应该如下:
def caidan():print('请选择你要吃的食物序号进去付款')print('1.宫保鸡丁')print('2.香辣鸡翅')print('3.糯米饭')print('3.饺子')print('4.沙县经典三件套')print('5.五花八门大丸子')
这是自定义函数功能已经编写完毕,那如何使用呢?很简单,你们应该记得print的使用方法吧?print和input都是函数,这些是系统自带的函数;它们的使用方法是在函数名后加一对括号。如input();我们自己编写的函数使用方法一致,直接函数名后加一对括号就可以完成自定义函数的使用,如:caidan()。先看这一部分的完整代码:
def caidan():print('请选择你要吃的食物序号进去付款')print('1.宫保鸡丁')print('2.香辣鸡翅')print('3.糯米饭')print('3.饺子')print('4.沙县经典三件套')print('5.五花八门大丸子')caidan()
c=int(input('请输入菜单序号:'))
if c:print('正在连接付款...')b=input('任意键返回...')if b:print('正在返回...')print('请选择你要吃的食物序号进去付款')
print('1.宫保鸡丁')
print('2.香辣鸡翅')
print('3.糯米饭')
print('3.饺子')
print('4.沙县经典三件套')
print('5.五花八门大丸子')
以上代码在头部就定义了自定义函数caidan,并且在caidan函数中编写了功能;在函数下的代码第一行,直接使用了caidan()调用函数,这是caidan()就等于函数内的代码:
print('请选择你要吃的食物序号进去付款')
print('1.宫保鸡丁')
print('2.香辣鸡翅')
print('3.糯米饭')
print('3.饺子')
print('4.沙县经典三件套')
print('5.五花八门大丸子')
在程序运行时应该显示函数中的代码运行结果:
从运行结果上可以得知,使用caidan()替代了那一大串代码,那我们也可以把原本代码中的底部的菜单提示给取消;代码如下:
def caidan():print('请选择你要吃的食物序号进去付款')print('1.宫保鸡丁')print('2.香辣鸡翅')print('3.糯米饭')print('3.饺子')print('4.沙县经典三件套')print('5.五花八门大丸子')caidan()
c=int(input('请输入菜单序号:'))
if c:print('正在连接付款...')b=input('任意键返回...')if b:print('正在返回...')caidan()
运行结果:
运行结果一致,但是代码少了很多,看起来就清爽多了。
1.2 了解有参数的自定义函数
还记得我们前几节内容中完成的两个数做加法运算的内容吗?需求是用户输入两个整数,计算机自动算出两个数之和,并且会显示出来告知我们。我们可以使用函数完成这个功能,方便我们之后需要使用到该功能的时候直接调用这个函数就可以了。
首先我们定义个函数,名为jiafa:
def jiafa():
这个函数需要传入两个值,函数只负责做加法运算,那如何编写呢?这时需要哦们添加两个参数,参数是指你需要用于“计算”的数字;就像平常你使用电饭锅,电饭锅的参数可以是米和水,因为电饭锅的作用是做饭,没米没水怎么做饭?我们的两数加法函数也一样,没有数字怎么样进行计算?所以我们需要传入两个值,这两个值就是参数。参数写在jiafa后的圆括号内;参数我们可以使用两个变量代替,例如数1变量:s1,数2变量:s2,那么代码为:
def jiafa(s1,s2):
这样就表示这个函数可以传入2个参数,当然可以更多参数,在此只是做为一个举例。传入多个参数需要使用逗号对参数进行间隔。接收数后我们接下来就可以开始对这两个变量进行计算。两个变量相加那就是:
print(s1+s2)
完整jiafa函数代码为:
def jiafa(s1,s2):print(s1+s2)
那如何使用呢?还记得print怎么传参数吗?print需要将显示的值传入到圆括号中;自定义函数的参数传递也是类似。我们传入两个数,一个1和一个10,代码写成:
jiafa(1,10)
完整代码如下:
def jiafa(s1,s2):print(s1+s2)jiafa(1,10)
运行结果为:
这是可以看到,输入1和10,他们之间使用逗号进行间隔,其中1的值将赋值给s1,10的值存入到s2,这是计算s1变量与s2变量的相加,那么输出结果为11。
那我们修改代码,使用input接收我们输入的两个值,再进行计算,代码为:
def jiafa(s1,s2):print('两个数相加等于:',s1+s2)a=int(input('请输入一个数字:'))
b=int(input('请输入另一个数字:'))
jiafa(a,b)
运行结果为:
1.3 了解有返回值的自定义函数
我现在突然感觉,我不想在函数里面输出,我只想拿到结果,输不输出我想按照当时情况而定,那这个需求怎么实现呢?很简单,我们把计算的值返回就可以了,这样我们的函数只做计算,并不进行输出;输出与否按照当时情况而定,灵活的运用。
函数的返回使用return,在自定义函数中最末位一行使用return,后接一个空格,随后一个值;这时整个函数运行完后将会有一个结果,这个结果就是使用return返回出去的值。例如我们修改1.2中的代码:
def jiafa(s1,s2):return s1+s2
与原程序相比少了输出,多了一个return,并且return后接一个空格,空格后接了两个变量相加的表达式;这个表达式并不是直接的值,不过不用担心,表达式最终会自动计算成一个值,使用return则将该值返回。若不理解也没关系,我们可以写成:
def jiafa(s1,s2):r=s1+s2return r
这时使用变量r接收了s1与s2的加法运算的值,最终返回r也是一样的。
那么我们可以在代码中调用函数后,将函数最终返回的结果赋给一个变量:
c=jiafa(a,b)
这时jiafa运行完自己函数内所有的代码后,返回一个值,这个值将给予c变量。我们再使用print输出c即可:
print('加法计算结果为:',c)
或者不使用变量接收,直接使用函数返回值输出也行:
print('加法计算结果为:',jiafa(a,b))
最终代码如下:
def jiafa(s1,s2):return s1+s2a=int(input('请输入一个数字:'))
b=int(input('请输入另一个数字:'))
print('加法计算结果为:',jiafa(a,b))
运行结果如下:
二、总结
- 了解自定义函数需要使用def进行定义,并且代码内容需要使用缩进
- 了解自定义函数参数的使用方法,并且多个参数使用逗号进行间隔
- 了解自定义函数的返回值使用return进行返回