python函数的定义
函数的定义
def 函数名(等同于变量名):
'''对函数(工具)的描述信息'''
代码块
例子:
def guess():
'''给定两个数,打印较大的数'''
x=20
y=30
if x>y:
print(x)
else:
print(y)
print(guess.__doc__)#打印注释
函数定义的特性:函数定义过程,只检测语法,不执行代码。调用阶段,会执行代码。
定义函数的三种形式
空函数
def shopping():
pass
有参函数
def guess(x,y):
'''给定两个数,打印较大的数'''
if x>y:
print(x)
else:
print(y)
print(guess.__doc__)#打印注释
guess(10,20)
无参函数
def guess():
'''给定两个数,打印较大的数'''
x=20
y=30
if x>y:
print(x)
else:
print(y)
print(guess.__doc__)#打印注释
函数的调用
调用:函数名()
guess()# 调用
print(guess)#函数的内存地址
函数的返回值
返回值:返回一个值(所有数据类型)
def guess():
'''给定两个数,打印较大的数'''
x=20
y=30
if x>y:
return x
else:
return y
num=guess()
print(num)
return的特性:
1.return返回一个返回值,如果没有返回值,就返回None
2.没有return,默认返回None
3.return会终止函数,不运行下面的代码,假设有多个return的时候,运行到第一个就会结束,不会运行第二个。
4.return通过逗号隔开,可以返回多个值,返回值以元组的形式接受。
函数的参数
形参
定义函数阶段的产物,具有接受是实参的用作,具有描述意义
位置形参
从左到右依次接受实参的值
默认形参
1.如果你不给值,使用默认值;如果调用的时候传值,使用传的值
2.默认形参必须放在位置形参后面
实参
调用阶段的产物,传给形参一个具体的值,据有具体的值(可以位所以数据类型)
位置实参
从左到右依次给位置形参传值,一一对应,形参有多少,实参必须也有多少。
关键字实参
1.位置实参必须写在关键字实参的前面。
2.按照形参名给形参传值(使用情况基本为0)——》函数的参数一般为0-3个,尽量不要超过3个。
可变长参数
可变长形参
*lt,把所有传过来的实参全部接收,并且以元组的形式存储
def min_10(a, b, c, *lt): # *lt,把所有传过来的实参全部接收,并且以元组的形式存储
print(lt)#(4, 5, 6, 7, -1, 9, 10, 11, 12, 13, 1, 1, 1, 1, 1, 1, 1, 11, 1)
a, b, c, d, e, f, g, h, i, j, *_ = lt
print(_)#[1, 1, 1, 1, 1, 1, 1, 11, 1]
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)
可变长实参
*相当于做了解压缩,也就是把lt内的元素一个一个取出来传给形参
def min_10(a, b, c, d, e, f, g, h, i, j):
print(a, b, c, d, e, f, g, h, i, j)#1 2 3 4 5 6 7 8 9 10
lt = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
res = min_10(*lt) # *,相当于做了解压缩,也就是把lt内的元素一个一个取出来传给形参
print(res)
*
*形参名
def f1(*args):#调用函数时,有多少个位置实参,我就接受多少个参数
print(args)
f1()#空元组
*args(约定俗成得),用元组接受多余得位置实参
*实参
def f1(a, b, c, e, d, f, g):
print(a, b, c, e, d, f, g)
lt = [1, 2, 3, 4, 5, 6, 7]# f1(lt[0],lt[1],lt[2],lt[3],lt[4],lt[5],lt[6])
f1(*lt) # *lt把列表中的元素打散成位置实参依次传给位置形参
**
**形参
def f1(**kwargs):
print(kwargs)
f1()#空字典
**kwargs用字典接受多余得关键字实参
**实参
def f1(z, b):
print(z, b)
dic = {'z': 1, 'b': 2} # a=1,b=2
f1(**dic) # **dic把字典打散成关键字实参然后传给函数f1