1、什么是函数
执行特定代码来实现特定功能的一段代码,进行封装,直接调用。
- 隐藏实现细节
- 提高可维护性
- 提高可读性
2、函数的定义与调用
#定义函数
def say_hello():
print('hello1')
print('hello2')
print('hello3')
#调用函数,函数只有被调用了才会有输出值
say_hello()
运行结果:
示例1:定义求和函数(计算 40+ 30)
def sum(a,b):
sum = a+b
return sum ##返回值为sum
SUM = sum(30,40) ##调用函数
print(SUM)
运行结果:
函数的调用参数方法:
(1)位置传参:将实参的值传给形参。
- 定义的时候sum(a,b)
- 所以调用的时候,sum(10,20),直接将10传给a,将20传给b
(2)关键字传参
- 定义的时候sum(a,b)
- 所以调用的时候,sum(b=20,a=10),直接传参。
3、函数的返回值
(1)0的布尔值为False
(2)非0的布尔值为True
(3)如果函数执行完毕不需要给调用处提供数据,return可以省略不写。
(4)如果函数的返回值为多个,则返回的结果为元组。
b = [1,5,6,34,56,78,99]
def fun(a):
o = []
j = []
for i in a:
if i%2:
j.append(i)
else:
o.append(i)
return o,j
roushu=fun(b)
print(roushu)
运行结果:
4、函数的形参设置
(1)默认形参def(a,b=10)
def fun(a,b=10):
print(a,b)
fun(2)
运行结果:当只给一个参数传参时,已设置的参数不受影响。
def fun(a,b=10):
print(a,b)
fun(2,3)
运行结果: 我们发现,设置的形参已经被实参传的参数覆盖。
(2)可变形参
个数可变的位置实参:
def fun(*args):
print(args)
fun(2,3,4) ###按顺序传
fun(45,45,34,45,'34t')
运行结果:
个数可变的关键字实参:
def fun(**args):
print(args)
fun(a=1,b=24,c=38)
fun(a=23,b=44,c='2344fff',d=43)
运行结果:注意是以字典形式打印出来的
不论是关键字实参还是位置实参,个数可变的参数只能定义一个。
(3)必选参数:
def max(num1:int,num2:int) ->int:
return num1 if num1>num2 else num2
result = max(78,32)
print(result)
6、函数的嵌套
def fun1():
print('world')
def fun2():
print('hello')
# 调用函数2(必须在函数1里先调用函数2)
fun2()
#调用函数1
fun1()
运行结果:
7、函数的四大参数
参数分为:形参 实参
#形参:定义函数的时候的变量(可以任意起名)
def welcome(a):
print('hello',a)
#实参:真实的数据信息,即调用函数的时候传的参数
welcome('lily')
welcome('tom')
运行结果:
形参分为: 位置参数 默认参数 可变参数 关键字参数
(1)位置参数
形参和实参个数必须保持一致,最好按位置传参
def getInfo(name,age):
print(name,age)
getInfo('westos',21)
getInfo(age=11,name='westos')
运行结果:
(2).默认参数
形参和实参可以不一致
#计算x的y次方
def mypow(x,y=2):
print(x ** y)
mypow(4,3) # 4的3次方
mypow(2) # 2的2次方
运行结果:
(3).可变参数
可以接收任意个参数
# 累加运算
def mysum(*args):
# *args:可变参数(也可以简写为*a)
# args的数据类型为:元组(tuple)
print(args)
print(type(args))
sum = 0
for item in args:
sum += item
print(sum)
mysum(1,2,3,4,5,6,7,8,9)
mysum(1,2,3,4,5)
运行结果:
(4).关键字参数
def getStuInfo(name,age,**kwargs):
# **kwargs是一个字典,可以传递任意多的key-value
print(name,age)
print(kwargs)
getStuInfo('westos',19,hobbies=['coding','running'],gender='female')