定义函数的好处
最重要的是,如果你遇到需要该需求的情况,函数的好处就能体现出来了,你只需要修改一些对应的函数功能,不需要大动干戈全部的代码文件。
1.提高了代码的可维护性。一个程序员的可控代码在2w行左右,封装成函数便于程序猿的维护。
2.减少了代码的冗余。很多重复的部分,如果改成函数,只需要调用,可以少些很多行代码。
3.提高代码的重用性。很多功能写的很好,遇到下一个需要这个功能,可以直接拿来使用,加快了开发的效率。
4.提高代码的灵活性。如果别人想用你写的这些功能,他只需要知道你函数的输入是什么,输出是什么就能使用,不需要关心你是怎么实现这个功能(这里写成你用别人的代码会不会心里好点)。
函数的概念
函数是由一段代码构成,能够完成一个特定的任务。
函数的定义
函数的关键词 def
def 函数名(形式参数):
函数体
return 返回效果
函数的调用
函数名(实际参数)
写到这里,写个小栗子大家稍微感受一下函数
栗子:A和B玩两个骰子,比大小,两个骰子结果相加,谁大谁赢。函数随机生成两个数字,然后将数字相加,返回它们的和
import random
# 函数随机生成两个随机数然后将数字相加,返回它们的和
def pointGet():
point1 = random.randint(1, 6)
point2 = random.randint(1, 6)
point = point1 + point2
return point
# A调用函数得到一个结果
A = pointGet()
# B调用函数得到一个结果
B = pointGet()
if A>B:
print("A赢了")
elif A==B:
print("平手了")
else:
print("B赢了")
下面是不用函数写的代码
import random
# A投掷两次投掷,得到结果
point1 = random.randint(1, 6)
point2 = random.randint(1, 6)
A = point1 + point2
# B投掷两次投掷,得到结果
point1 = random.randint(1, 6)
point2 = random.randint(1, 6)
B = point1 + point2
if A>B:
print("A赢了")
elif A==B:
print("平手了")
else:
print("B赢了")
你们可以感受一下,上面只是调用一下函数部分,一行结束,下面每个人都要写一遍功能,函数部分要是越长,越能对比出来。
函数的运行机制
一个程序写完之后,运行时,要先经过 编译流程 再到 执行流程。
那么函数在程序中的运行机制呢?
编译流程:
1> 寻找def关键字 创建一个函数对象
2> 创建一个函数体(但是并不执行)
执行流程:
1> 执行函数的调用
2> 根据函数名跳转到函数定义的位置
3> 执行函数体
4> 返回到函数调用处,继续向下执行。
函数注意事项:
虽然不是说函数必须写在一个程序块的最上面,但是函数必须要在调用之前定义好,所以为了不弄乱,也为了能够有更好的可读性以及书写习惯,把函数一般都定义在最上面。
函数名一定要好好命名,这样方便你去调用,可读性也能更好。
函数名开头必须小写,但是“小驼峰”还是用“_”分隔开,书写上面都不会报错,但是网络上说python有人说“小驼峰”规范有人说“_”规范,不太能确定。
总结:
函数是写出“好看”代码的基础,一定要练习好函数的使用,但并不说一定要写成函数,只有一行两行代码的写在流程里一样漂亮。