编程方法大致有三种:
——面向对象
——面向过程
——函数式编程
面向对象——类——class
面向过程——过程——def
函数式编程——函数——def
——函数的定义——
编程语言中函数定义:函数是逻辑结构化和过程化的一种编程方法。
python中函数定义方法:

def:是定义函数的关键字
test:函数名
():里面可以定义形参
''' ''':文档描述(非必要,但是强烈建议为你的函数增添描述信息)
x+=1:泛指代码块或程序处理器
return:定义返回值
现在呢,我们来区分一下函数和过程:

可以看出,过程就是没有返回值的函数。
我们调用一下这个函数和过程:

调用函数func1,然后把值赋给了x,此时的x应该是0。调用过程func2,然后将其赋给y,过程没有返回值,我们认为此时的y应是空。
我们看一下结果是不是这样:

返回的是空,python给了一个None值。
那什么是过程呢?过程就是用def把你的逻辑封装起来。然后在你需要用到这个过程的时候,直接进行调用即可。
——函数的作用——
假设我们有一段逻辑,用来以追加的方式写日志。

假设我们现在有三个功能不同的函数,但是每个函数都需要追加一次日志,代码便是这样的:


我们将追加日志的部分写成函数,就不用每次都复制那一段代码,就可以在用到这个功能的时候,直接进行调用即可:


现在我们要求提高了,要求不仅要追加日志,还要添加上追加日志的时间。如果没有将追加日志部分写成函数,我们需要在function1、2、3这三个函数中,依次添加上修改时间。如果我们把追加日志部分写成函数,就可以直接在函数中修改。
代码如下:


所以,总结一下函数的三个作用:
——可扩展性
——保持一致性
——代码重用
——函数的返回值——
return语句的作用:结束函数,并且返回函数的返回值。
先来看一下结束函数这个作用:
语句执行到return的时候,整个函数就结束了,不会再往下执行了,所以不会打印“987654321”。

我们接着打印一下这个函数的返回值:

那么,函数都能返回一些什么值呢?
举三个例子看一下:

#第一个函数test1,没有写返回值,这时候Python会隐式的赋一个空值(None)。
#第二个函数test2,写了返回值0,则返回0值。
#第三个函数test3,返回了一堆,包含了数字、字符串、列表、字典,但是在返回的时候,把他们作为一个元组来返回。
总结一下:
返回值数=0,返回None。
返回值数=1,返回object。
返回值数>1,返回tuple。
网友评论