1、函数定义
2、函数优点
1 # 1、python中函数定义方法:
2
3 def test(x):
4 "The function definitions"
5 x += 1
6 return x
7
8
9 # def:定义函数的关键字
10 # test:函数名
11 # ():内可定义形参
12 # "":文档描述(非必要,但是强烈建议为你的函数添加描述信息)!!!!!!
13 # x+=1:泛指代码块或程序处理逻辑
14 # return:定义返回值
15
16 # 调用运行:可以带参数也可以不带
17 # 函数名()
18
19 # 2、例子:
20 def test(x):
21 x += 1
22 return x
23 y = test(3)
24 print(y)
25
26 # 3、函数优点
27
28 # 1.代码重用
29 # 2.保持一致性,易维护
30 # 3.可扩展性
31 # 过程:没有return返回值的函数
32
33 # 4、返回个数、类型
34 # 返回值数=0:返回None
35 # 返回值数=1:返回object
36 # 返回值数>1:返回tuple
3、形参、实参、位置参数和关键字、默认参数、参数组
1 # 5、形参、实参、位置参数和关键字、默认参数、参数组
2 # 实参与形参位置一一对应;关键字:位置无需固定
3 # **字典 *列表
4 # 参数组 位置参数
5 def test(x,*args):
6 print(x) # 结果:1
7 print(args) # 结果:(2, 3, 4, 5, 6)
8 print(args[0]) #结果:2
9 test(1,2,3,4,5,6)
10
11 # 关键字
12 def test(x,**kwargs):
13 print(x) # 结果:1
14 print(kwargs) # 结果:{'y': 2}
15 test(1,y=2)
16
17 def test(x,*args,**kwargs):
18 print(x) # 结果:1
19 print(args) # 结果:(1, 2, 3, 4, 5, 4)
20 print(kwargs) # 结果:{'y': 2, 'z': 3}
21 test(1,1,2,3,4,5,4,y=2,z=3)
22 test(1,*[1,2,3],**{"y":1}) # 结果:1 (1, 2, 3) {'y': 1}
"""
实参传递方式
位置传参
序列传参
关键字传参
字典传参
"""
def fun1(a, b, c):
print("a=", a)
print("b=", b)
print("c=", c)
# 位置传参:实参与形参的位置依次对应。
fun1(2,1,3)
# 序列传参:实参用*将序列拆解后与形参的位置依次对应
fun1(*[1,2,3])
# 关键字传参:实参根据形参的名字进行对应。
fun1(b = 2,a = 1,c = 3)
# 字典传参:实参用**将字典拆解与形参的名字进行对应。
fun1(**{"b":2,"a":1,"c":3})
# 默认(缺省)参数
def fun2(a=0, b=0, c=0):
print("a=", a)
print("b=", b)
print("c=", c)
# 可以结合关键子传参,随意选择参数
fun2(b = 2)
def fun3(a, b=0, c=0):
print("a=", a)
print("b=", b)
print("c=", c)
# a 是位置参数,必须传递
fun3(1)
"""
形参传递方式
位置形参
星号元组形参
"""
# 位置形参
def fun1(a,b,c):
pass
# 星号元组形参:收集多余位置形参
def fun2(*args):
# 对于函数而言,args就是元组
print(len(args),args)
fun2()
fun2(1)
fun2(1,2)
#练习:定义函数,累加整数。
def fun3(a,*args):
# 对于函数而言,args就是元组
print(len(args),args)
fun3(1)
"""
形参传递方式
命名关键字形参
"""
# 命名关键字形参:强制实参使用关键字传递。
def fun1(*, a, b):
print(a, b)
# fun1(1,2)
# fun1(*[1,2])
fun1(b=2, a=1)
fun1(**{"b": 2, "a": 1})
# a b 是位置传参,c,d 必须是关键字传参
def fun2(a, b, *, c, d):
print(a, b, c, d)
fun2(1, 2, c=3, d=4)
# 星号元组形参后的,位置形参是命名关键字形参。
def fun3(*args, c, d):
print(args, c, d)
fun3(3,4,4,5665,d = 9,c=5)
# 练习:print函数定义
# print(*args, sep=' ', end='
', file=None)
# 打印(内容,sep = “连接符号”, end = "结束符号")
print("asdf",1343,sep = "$",end = "
")
print("ok")
# 双型号字典形参:可以收集多余的字典关键字实参
def fun4(**kwargs):
# 对于函数内部而言,就是字典
print(kwargs)
# fun4(1,2,3)
fun4(a = 1,c = "ccccc",d = [1,2,3],e = True)
def fun5(*args,**kwargs):
print(args,kwargs)
fun5()
fun5(23,34,a = "adsf",qtx = "qtx")