第十天
函数
函数--->工具(需要用的时候才用,提前造)
需要用函数的时候,拿来用就行了,需要提前写好
函数不会改变某个功能的代码,它只做了一件事情,封装(接口),只会让你的代码更加简洁
内置方法就是一个个函数,别人帮你写好的
函数的定义
'''def 函数名(等同于变量名)():
""""对函数(工具)的描述信息"""
代码块'''
ef guess():
"""给定两个数,打印较大的数"""
x = 30
y = 20
if x>y:
print(x)
else:
print(y)
print(guess.__doc__) #给定两个数,打印较大的数
定义函数的三种形式
空函数
def func():
pass
# 写项目的时候可以先用空函数把框架搭建出来,再实现功能
有参函数
def guess1(x,y):
"""给定两个数,打印较大的数"""
if x>y:
print(x)
else:
print(y)
guess1(20,30)
无参函数
def guess():
"""给定两个数,打印较大的数"""
x = 30
y = 20
if x>y:
print(x)
else:
print(y)
函数的调用
函数的调用就是在使用函数
函数名加() 加()就能调用函数,没有为什么
函数在不被调用的时候不会运行,运行只能看到有没有语法错误
def guess1():
"""给定两个数,打印较大的数"""
x = 30
y = 20
if x>y:
print(x)
else:
print(y)
guess1() # 调用函数
函数的返回值
print只能把结果打印出来,并不能得到这个值,return返回可以拿到这个值
函数返回的一个值,这个值可以是任意的数据类型
ef guess1():
"""给定两个数,打印较大的数"""
x = 20
y = 30
if x > y:
# print(x)
return x
else:
# print(y)
return y
return的作用
-
return 返回一个返回值,如果没有返回值,返回None
-
没有return 默认返回None
-
return 会终止函数,不运行下面的代码,假设有多个return的时候,运行到第一个就会结束,不会运行第二个
-
return 通过逗号隔开,可以返回多个值,返回值以元组的形式接收
函数的参数
有参函数:有参数(手电筒(强光/弱光,由你自己调控))的函数
要有这个功能,使用的时候才会触发
def guess1(x:int,y:int = 20 ) ->int: # :后面规定是参数的数据类型,约定俗成的 ; ->后面规定的是返回值的数据类型,约定俗成的
"""给定两个数,打印较大的数"""
if x>y:
return x
else:
return y
guess1(30)
形参
定义阶段的产物,具有接受实参的作用,具有描述意义
位置形参:
从左到右依次接收实参的值
默认形参:
1.如果你不给,使用默认值;如果调用的时候给,就用给的值。2.默认形参要放在位置形参的后面
实参
调用阶段的产物,传给形参一个具体的值,具有具体的值
位置实参:
从左到右依次传给位置形参值,一一对应,实参有多少个,形参就要有多少个
关键字实参:
当参数较多时,可能会把参数弄混,因此就出现了关键字实参
1.按照形参形参名给形参传值(基本不会使用)--->函数的参数一般只有0-3个
2.位置参数必须要写在关键字参数前面
可变长参数
可边长形参
# 可变长形参
def min_2(x, y):
if x > y:
return y
else:
return x
def min_4(a, b, c, d):
res1 = min_2(a, b)
res2 = min_2(c, d)
return min_2(res1, res2)
def min_8(a, b, c, d, e, f, g, h):
res1 = min_4(a, b, c, d)
res2 = min_4(e, f, g, h)
return min_2(res1, res2)
def min_10(a, b, c, *lt): # *lt,把所有传过来的实参全部接收,并且以元组的形式存储
print(lt)
a, b, c, d, e, f, g, h, i, j, *_ = lt
print(_)
res1 = min_8(a, b, c, d, e, f, g, h)
res2 = min_2(i, j)
return min_2(res1, res2)
res = min_10(1, 2, 3, 4, 5, 6, 7, -1, 9, 10, 11, 12, 13, 1, 1, 1, 1, 1, 1, 1, 11,
1, ) # *,相当于做了解压缩,也就是把lt内的元素一个一个取出来传给形参
print(res)
可变长实参
def min_2(x, y):
if x > y:
return y
else:
return x
def min_4(a, b, c, d):
res1 = min_2(a, b)
res2 = min_2(c, d)
return min_2(res1, res2)
def min_8(a, b, c, d, e, f, g, h):
res1 = min_4(a, b, c, d)
res2 = min_4(e, f, g, h)
return min_2(res1, res2)
def min_10(a, b, c, d, e, f, g, h, i, j):
print(a, b, c, d, e, f, g, h, i, j)
res1 = min_8(a, b, c, d, e, f, g, h)
res2 = min_2(i, j)
return min_2(res1, res2)
lt = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
res = min_10(*lt) # *,相当于做了解压缩,也就是把lt内的元素一个一个取出来传给形参
print(res)