今天我们要学习的是Python中的函数基础,具体包括“什么是函数?”、“函数的定义”以及“函数的作用”,废话不多说,现在开始
1.什么是函数
其实,在我们上初高中的时候,我们就已经接触到了函数,比如f(x) = 2x,f(x,y)= x+y+3,等等,我们知道,将x,y代入相应的值就能得到相应的结果,比如,f(2)= 4,f(1,2) = 6。其实,在Python中,函数的用法也类似差不多,就是范围更广,表达更随心所欲。Python中的函数用来实现一些特定且相对独自的小功能。其实,我们在还没有学习到函数的时候,就已经在不经意的时候使用了函数,那就是我们python中的内置函数,比如print()、max()、type()、len()、remove()、pop()等等。他们都是用来实现某一个特定相对独立的小功能的。比如print()函数,就是专门用来打印内容到控制台的,max()是用来求一堆数据中的最大值的,type()是用来判断数据是何种类型的,在此我就不一一说明了。
接下来,就让我们学习一下,自己怎么写一个函数吧。
2.函数的定义
def 函数名(参数1,参数2,参数3):
"文档字符串"
函数体
return[表达式]
2.1要写一个函数,我们第一个就要写关键字“def”,只要一看到def,我们就知道这是一个函数,然后在def的后面我们接上函数名和圆括号(),这里,我们要注意的是,函数名的命名,还是遵照我们之前的标识符命名规则,尤其是在命名函数名的时候,一定要“见闻知意”,比如add(),一看就是和加法有关,print()一看就和打印有关,切不可胡乱取名。
2.2 需要传入的参数我们一定要放在圆括号()内,可以传如1个,2个,0个或者多个参数,参数与参数之间注意用“,”隔开。
2.3 写完参数后,在圆括号后面以“:”结尾,后换行缩进。
2.4 在函数体之前我们可以加入一段函数解释,解释函数的用途,入参的意思以及返回值相关解释。
2.5 很重要的一点是,函数必须以return加上返回值的形式结束。如果有多个返回值,可以将多个返回值以逗号隔开,一并返回,如果没有返回值,那么可以只写一个return,或者写 return None,或者不写reutrn这一行,这三种方式都会返回None!
例子一:简单的函数
# 例子1
def add(x, y):
sum = x + y
"""
加法
:param x: 加数1
:param y: 加数2
:return: 返回和
"""
return sum
以上,就是一个最简单的例子,函数名为add,入参x和y以逗号隔开放入()号中,后加上冒号,我们将x与y相加作为和赋值给sum,然后结束函数,return sum。中间绿色部分是注释,告诉用户这个函数的作用,以及改传入什么,返回什么。
例子二:两个返回值
def change_value(value1, value2):
"""
交换两个变量的值
:param value1: 变量b
:param value2: 变量
:return:
"""
a, b = value2, value1
return a, b
例子二其实和例子一没有啥大的区别,不同点之处在于return的时候,返回的是两个值a和b,这边不进行过多介绍,只是简单举例。
例子三:无返回值
def login(name, password):
if name == "jack" and password == "110":
print("登录系统成功")
else:
print("用户名或密码错误")
# return # 1,只返回return
# return None # 2
这个方法并没有返回值,所以,没有return部分,当然如果想要写return,最后两句注释掉的代码都是一样的作用,这三种情况均返回None。
例子四:没有入参
def get_jack_name():
return "jack"
这个函数没有入参,只要被调用,就返回jack的名字。
以上,我们只简单的举例四个函数来大体感受一下函数的写法。更加详细的函数我们将在下一章python之函数(二)中进行讲解。
3函数的作用
3.1实现某个指定的功能,使得可以在多处调用
无论是python的内置函数,还是我们自定义的函数,都是为了来实现某一指定功能的。就比如python中的Math模块它里面大部分的函数都是一些定义好的运算,比如cos()、asin()等等,这样我们调用math里面的相关函数,就可以直接进行相关计算,哪里需要使用,哪里就导入对应函数,特别的高效和方便。
3.2 提高代码的复用性,减少代码的冗余
还是看上面的math模块,如果我们不把asin()这种计算写成一个函数的话,我们每次在哪里使用到的时候就会去写一遍实现该函数的代码,使用一次写一次,这样就很繁琐,大量的复制粘贴工作,用了函数之后,大大减少了代码的冗余,提高我们代码的复用性。
3.3 提高代码的可扩展性,使得代码可读性变强,修改容易
国际惯例,我们的加法是x+y的形式,就比如2+1=3.如果我们不用函数封装加法这一功能,用一次写一次加法相关代码,如果有一天国际惯例是2+1 = 1,那么所有相关加法的地方我们都要去修改,但是我们写成函数,在各个地方调用的话,我们只需要修改add(x,y)加法函数中的代码,其他所有的地方都得以修改,使得代码可扩展性,灵活性都很好。