def 函数名():
代码块
一、函数定义
def 函数名(param1,param2……):
"""
函数功能的描述信息
:param1:描述
:param2:描述
:return:返回值
"""
code 1
code 2
code 3
...
return 返回值
函数定义阶段:只检测语法,不执行函数体代码
函数调用阶段:执行函数代码
1.无参函数
def hello():
print('hello')
hello()
hello
2.有参函数
def maax(i,j):
if i >= j:
print(i)
else:
print(j)
maax(15,20)
20
3.空函数
def super_max_ultra():
pass
返回值
return 任意数据类型的数据 可以使用逗号隔开返回多个值(多个:返回值会被包成元组)
def maxx(i,j):
if i>=j:
return i,'大'
else:
return j,'大'
print(maxx(15,20))
(20, '大')
二、函数的调用
调用函数,会执行函数体代码,直到碰到return或者执行完函数体内所有代码结束。
def max_self(x,y):
if x>y:
return x
else:
return y
# 1.
max_self(1,2)
# 2.
res = max_self(1,2)*12
# 3.
max_self(max_self(20000,30000),40000)
三、函数的参数
形参 #定义阶段的x,y
实参 #函数调用阶段传入的参数
会按前后顺序,即位置参数
def maax(i,j):#i,j即形参
if i >= j:
print(i)
else:
print(j)
maax(15,20)#15,20即实参
20
默认形参 #在定义阶段提前赋值给形参
位置形参必须放在默认形参的左边。
默认参数的值通常应该是不可变类型。
def maax(i=100,j=50):#i,j即形参
if i >= j:
print(i)
else:
print(j)
maax()
maax(15,20)
100
20
关键字实参 #在调用函数时,按照key=value的形式为指定的参数传值,称为关键字实参。
可以混用位置实参和关键字实参,但是位置实参必须在关键字实参的左边。
可以混用位置实参和关键字实参,但不能对一个形参重复赋值。
def maax(i=100,j=50):#i,j即形参
print(f'i={i},j={j}')
if i >= j:
print(i)
else:
print(j)
maax()
maax(j=15,i=20)
i=100,j=50
100
i=20,j=15
20
可变长形参
*
形参中的*会将溢出的位置实参全部接收,然后存储元组的形式,然后把元组赋值给*后的参数。需要注意的是:*后的参数名约定俗成为args。
只接收位置参数,不接收关键字实参
def sum_self(*args):
res = 0
for num in args:
res += num
return res
res = sum_self(1, 2, 3, 4)
print(res)
10
**
形参中的会将溢出的关键字实参全部接收,然后存储字典的形式,然后把字典赋值给后的参数。需要注意的是:**后的参数名约定俗成为kwargs。
只接受关键字实参
def func(**kwargw):
print(kwargw)
func(a=5,b=6)
{'a': 5, 'b': 6}
可变长实参
*
实参中的*,*会将*后元组/列表打散成位置实参。
def func(a,b,c,d,e,f,g):
print(a,b,c,d,e,f,g)
func(*(1,2,3,4,5,6,7))
1 2 3 4 5 6 7
**
实参中的**,**会将**后的字典打散成关键字实参。
def inf(**kwargs):
print(kwargs)
inf(**{'name':'Lunar','sex':'female','age':27})
{'name': 'Lunar', 'sex': 'female', 'age': 27}
#我只要关键字实参
def mm(*a,**b):
print(b)
mm(1,2,3,a=2,b=3)
{'a': 2, 'b': 3}
浙公网安备 33010602011771号