7.函数
函数的功能:防止重复写代码,使整体的程序可读性提升
函数的定义
- 将一组语句或者几个通过一个名字(函数名)封装起来
- 减少重复写代码,使程序更加易维护
#定义一个空函数
def kong():
pass #什么都不用做
7.1 定义函数的形式
- 无参形式 括号里没有变量
def func():
print('哈哈哈哈')
print('哈哈哈哈')
print('哈哈哈哈')
print('哈哈哈哈')
func() #调用函数 加括号就行
>>>输出结果
哈哈哈哈
哈哈哈哈
哈哈哈哈
哈哈哈哈
- 有参形式
#灵活使用你的函数
def add(x, y):
a, b = x, y
c = a + b
print(c)
add(1, 2) #自己输入xy的值
add(10, 1)
>>>输出结果
3
11
#赋值表达
def add(x, y):
a, b = x, y
c = a + b
return c
res = add(1, 2)
print(res)
>>> 3
- 函数的返回值 return 函数结束的标准
- 返回值在 函数完成时,给我们的一个结果,我们可以用一个变量去接收这个结果
#1. 返回None 函数里面没有return
#2.返回一个值
#3.返回多个值
def func():
return 10, 20
a,b = func()
print(a, b)
>>> 10 20
7.2函数的参数
形参
定义函数时,小括号中的参数,接收参数用的
7.2.1 位置参数
- 从左往右依次定义参数,必需要传值
def func(x, y):
print(x, y)
func(2,1)
func(1,2)
>>>输出
2 1
1 2
# 需要注意的是
# 1. 位置实参 必须要写在关键字实参前
# func(y=2,1) 会报错
# 2. 不能给同一个形参传值
func(1, y=2)
>>> 1 2
7.2.2关键字实参
- 指名道姓的传值
def func(x, y):
print(x, y)
func(y=2, x=1)
>>> 1 2
7.2.3默认形参
- 在函数的定义阶段就将参数赋值
def func(x, y=3):
print(x,y)
func(1, 4)
>>> 1 4
实参
实参:调用函数的时候,小括号中的参数,用来传递数据到函数内部的
#### * 接受溢出的位置参数
def func(x, y, *args):
print(x, y)
print(args)
func(1,2,3,4,5,6)
>>>输出
1 2
(3, 4, 5, 6)
##### 利用* 求算数和
def my_sum(*args):
i = 0
for item in args:
i += item
return res
res = my_sum(1, 2, 4, 5, 8, 100)
print(res)
>>> 120
- * 可以使用在实参里面 先将值拆分为位置参数
def func(x, y, z):
print(x, y, z)
func(1,2,3)
func(*[1, 2, 3])
>>>输出
1 2 3
1 2 3
- 形参和实参里面都带 *
# 形参和实参里面都带*
def func(x, y, *args):
print(x, y, args)
func(1, 2, 3, 4, 5, 6)
func(*[1, 2, 3 ])
>>>输出
1 2 (3, 4, 5, 6)
1 2 (3)
- 关键字实参
- ** 保存到了字典
def func(x, y, **kwargs):
print(x, y, kwargs)
func(1, y=2, a=1, b=2, c=3)
func(y=222, x=111, **{'a':333})
>>>输出
1 2 {'a': 1, 'b': 2, 'c': 3}
111 222 {'a': 333}
######
def func(x, y, *args,a,b):
print(x, y)
print(a,b)
print(args)
func(1,2,1,2,3,4,b=222,a=123)
>>>
1 2
123 222
(1, 2, 3, 4)
- 混用的时候 *args 要写在kwargs之前**
def func(x,*args, **kwargs, ):
print(x)
print(args)
print(kwargs)
func(1,2,3, a=1,b=2,c=3)
>>>
1
(2, 3)
{'a': 1, 'b': 2, 'c': 3}