目录
一、Python函数
在之前的学习中,我们见过了“len()”,“max()”,等,这些都是Python自带的基本函数,方便了我们代码的编写。
那为什么我们需要函数呢?
在写代码时,如果在代码中多次需要某功能,比如求某几个数中的平均数,我们如果在每个地方都写一遍求平均值的代码未免过于麻烦了,我们可以在程序的某一个地方写上一个函数,然后等需要它的时候用实参(后面会说)进行调用就可以了
当然,我们不仅可以使用自带的函数,我们也可以自己创造一个函数,只要把其中的功能包起来就行
二、函数的定义
在Python中,我们会用def关键字来定义一个函数,具体格式如下:
def 函数名 (参数1, 参数2 ......)
语句组(也就是函数体)
(当然也可以没有参数):
def 函数名 ()
语句组(也就是函数体)
三、函数调用和return语句
当我们写完了函数时,我们只需要一句话就可以实现函数的调用,即:
函数名 (参数1, 参数2,......)
对于函数的调用,也是一个表达式,函数则会调用表达式的数值,然后由函数内部的return语句决定,return语句格式如下:
return 返回值
return语句的功能就是结束函数的执行,并将返回值作为结果返回,这里的“返回值”可以是一个常量、变量、或是复杂的表达式均可。
如果函数不需要返回值,直接写return即可。
return作为函数的出口,可以在函数中多次出现,且多个return语句的“返回值”可以不同。
现在我们已经了解了函数的一些基本知识,现在让我们自己来手搓一个Max函数!(虽说Python自带,但是肯定没有自己手搓的香~~)
代码:
def Max (x,y):
if x > y :
return x
else :
return y
#以上内容为函数
n = Max (6,8)
print(n)
print(Max(9,n))
输出:
在上面的代码中,“Max (x,y)”中的x和y就是形参,而“n = Max (6,8)”和“print(Max(9,n))”中的6、8、9,n就是实参,程序会把我们输入的实参调入到函数的形参中,然后在内部的函数体进行运算,最后通过return语句输出
上面我们提到,函数可以返回多个数值,比如我们让用户给定两个数字,然后返回对应的加减乘除运算:
a = int (input("请输入第一个数字:"))
b = int (input("请输入第二个数字:"))
def Jjcc (x,y) :
if y == 0 :
print("输入错误!!!!")
else :
return x+y , x-y , x*y , x/y
jieguo = Jjcc (a,b)
print(jieguo)
我们来看看对应的两种结果:
四、函数中的变量
在函数中,我们可以取相同的变量名,但是当变量在不同位置时,也会对变量最终的数值造成影响,我们下面来看一下具体的例子:
1、在函数外(全局的x):
x = 6
def scy () :
print("x的值是:",x)
scy ()
这个x是全局的x,所以结果就是6
2、在函数内部(局部的x):
def scy () :
x = 6
print("x的值是:",x)
scy ()
这个是局部的x,只会作用在函数内部,结果是6
3、在函数中声明为全局变量的:
x = 10
def scy () :
global x
print("x的值是:",x)
x = 8
print("x的值是:",x)
scy ()
我们可以在函数中用global关键字对变量进行声明,这样x的值就是全局变量x的值了,而当我们在内部函数中进行更改时,x的数值也会跟着变化:
所以输出是:
4、错误写法:
x = 10
def scy () :
print("x的值是:",x)
x = 8
scy ()
在上面的这个例子中是错误的,我们在函数中一开始是默认x的值是全局变量的值,但是后面又对其进行更改,会让程序发生报错!!!!!!
五、递归
在一个概念中用到了这个概念本身,就叫递归
在Python中通俗的说就是:一个函数,自己调用了自己,就是递归。
当然我们也可以看作是调用了一个和自己同名同功能的函数(名字其实也可以不同~~~)
我们下面用“阶乘”的概念来解释以下递归:
假如现在我们要写“5”的阶乘,那我们就可以看作是求“5”乘“4”的阶乘,那么“4”的阶乘我们可以看作“4”称“3”的阶乘......以此类推,直到数字“1”,那么众所周知,1的阶乘就是1(这个条件很重要),那么我们就可以根据就这个思想来求解n的阶乘了:
n = int(input("请输入数字:"))
def JieCheng (n) :
if n == 1 :
return 1 #终止条件
else :
return n * JieCheng (n-1)
a = JieCheng (n)
print(a)
注意!!!:递归函数需要一个终止条件!(上面的例子终止条件就是一的阶乘就是一),否则程序就会进入无穷递归甚至导致崩溃!!!
我们在编写递归函数时,需要有一个基本思想:即先做一步,做完后让剩下的步骤中有能包含第一步的相似之处的步骤,才能实现递归
下面让我们来用递归函数来解决一个经典小问题:
如果有一个n阶的台阶,每次只能走一or两阶,那么一共有几种走法:
n = int(input("请输入台阶的阶数:"))
def Ways (n) :
if n == 1 :
return 1
elif n== 2 :
return 2
else :
return Ways(n-1) + Ways(n-2)
a = Ways(n)
print(a)
解释:
我们先来想终止条件,当阶数只有1的时候,我们只有一种方法,当阶数为2的时候,我们有两种方法,而当我们走了第一步后可能有n-1个台阶或者n-2个台阶,这时就可以继续效仿第一步了。
以上就是Python函数和递归的基本内容:)