目录
一.函数
1.函数的定义👇
注意:
1.形参列表可以有多个形参,可以用 ,隔开
2.函数体要缩进,这样才是函数内部的代码
3.return可以有,也可以没有
函数的意义:一段可以被重复使用的代码
例1:用函数实现求和程序
def theSum(beg,end):
thesum=0
for i in range(beg,end+1):
thesum+=i
print(thesum)
# 函数内部👆
# 函数调用👇
theSum(1,100)
函数的调用
只有进行了函数调用,程序才会运行
程序实操👇
def test():
print("Hello World")
print("Hello World")
print("Hello World")
# 函数的内部👆
# 函数的调用👇
test()
注意:函数内部与函数调用要用俩个空行
程序运行👇
1.函数在调用得时候把实参的值赋给了形参
2.函数在调用的时候实参的值和形参应该相匹配
注意:在c/c++和Java中,不光要求形参和实参的个数相匹配,还要求类型相匹配
在python中,不要求实参和形参的类型相匹配
程序如下👇
函数的标准版本
def theSum(beg,end):
global thesum
thesum=0
for i in range(beg,end+1):
thesum+=i
return thesum
print(theSum(1,100))
return把thesum的值返回到了函数调用的时
候,从而实现了打印
双return的应用
判断奇偶性
def isodd(num):
if num % 2 ==0:
return False
return True
print(isodd(10))
如果if为True,则会执行第一个return,第二个return就不再执行
如果if为False,则会跳过第一个return,执行第二个return
程序运行👇
用return实现函数外部对函数内部的值的访问
def getpoint():
x=10
y=20
return x,y
a,b=getpoint()
print(getpoint())
return的返回值到达函数调用的部分也就是getpoint(),然后getpoint()把值赋值给a,b
使用下划线 "_",可以只把y的值赋值给b👇
def getpoint():
x=10
y=20
return x,y
_ ,b =getpoint()
print(b)
变量的作用域
一个变量名的范围是有效的,只在一定的范围内起效。
函数里边的x,y与函数外边的x,y不一样,虽然形式一样,但是俩个变量
函数内部的为局部变量,函数外部的是全局变量
判断x的值哪个是函数内部的,哪个是函数外部的
x=10
def test():
x=20
return x
print("打印函数内部的",test())
print("打印函数外部的",x)
代码运行👇
可以把局部变量进行声明,让其变为全局变量
用global x 来进行声明
注意!!!
函数执行的过程
执行到函数调用的时候,会跳转到函数内部继续执行👆
函数的链式调用和嵌套调用
链式调用:用一个函数的返回值,作为另一个数的参数
就是那个print(isodd(11))
一层链式调用👇
# 判断奇偶性
def isodd(num):
if num % 2 ==0:
return False
return True
print(isodd(11))
二层链式调用
运行结果👇
函数的嵌套调用
函数的嵌套指的是:函数内部存在其它函数的调用值,从而跳到其他函数的内部
从而实现嵌套
def a():
print("函数a")
def b():
print('函数b')
a()
def c():
print("函数c")
b()
def d():
print("函数d")
c()
d()
程序运行👇:
函数的递归
# 用函数递归实现阶乘的运算👇
def factor(n):
if n==1:
return 1
return n *factor(n-1)
print(factor(5))
解释👇
factor(5)进行函数的调用,到达return n*factor(n-1),此时是5*factor(4),然后factor(4)进行函数的调用,factor(4)变成4*factor(3),然后factor(3)进行函数调用,变成3*factor(2),以此类推,最后实现了5*4*3*2*1,也就是实现了5的阶乘
函数递归的优缺点:
函数形参的默认值
在程序操作中,True可以被省略,默认值为True
程序实操👇
实参把debug:True传给了形参debug=False,从而满足了debug为True,从而满足了if条件
优缺点👇
函数的关键字参数👇
结语:
限于水平,本篇文章不足之处在所难免,希望读者指正,谢谢大家!!