01 函数的初识
1.函数是什么?
具备某一项功能的工具即函数。而想要使用函数,那么需要首先对它进行定义。
2.函数怎么定义?
def 函数名(参数1,参数2,参数3,...):
'''注释'''
函数体
return 返回的值
#函数名要能反映其意义
3.函数的优点?
1)减少代码重复率;
2)增强代码的阅读性。
4.函数的使用原则:先定义再调用
定义函数名的规则和定义变量的规则是一样的,都是必须由字母数字下划线组合,不能以数字开头,不能是python中的关键字,也不能和内置函数同名。在使用过程中要区分函数的定义阶段和调用阶段。
#定义阶段
def func():
print('Hello world!')
#调用阶段
func()
注意:1.函数在定义过程中只检查语法错误,逻辑错误不会检测,在pycharm等软件中逻辑错误不会标红。
2.函数的执行者:函数名()
02 函数返回值return
1.作用
1)在函数体中如果遇到return直接结束函数。
2)给函数的执行者返回值。
2.在函数中返回值分情况讨论:
1.函数中只使用return
返回值为None
def func(a,b):
print(a,b)
return
print(func(1,2))
#返回值为None
2.使用return 单个值
返回值为原封不动的单个值,数据类型不会改变。
def func(a,b):
c = a + b
return c
s = func(1,2)
print(s,type(s))
#返回值为1+2的结果3,类型为<class 'int'>
3.使用return返回多个值。
返回值为一个元组,由多个值组成的一个元组。
def func(a,b):
c = a + b
return a,b,c
s = func(1,2)
print(s,type(s))
#返回值为(1,2,3),类型为<class 'tuple'>
注意:工作中,定义函数尽量不要出现print
03 函数参数
1.实参
1)位置参数
原则:按照顺序,一一对应
def func(a,b):
c = a + b
return a,b,c
print(func(1,2)) #1,2和函数中的a,b 按照顺序,一一对应
2)关键字参数
原则:可以不按照顺序,但是必须一一对应。
def func(a,b):
c = a + b
return a,b,c
print(func(b = 2,a = 1))
#按照key = value形式定义实参,顺序可以不和形参顺序相同,但是必须一一对应
3)混合传参:
原则:关键字参数一定要在位置参数后面
def fun1(a,b,c,d,e):
c = [1,2,3]
d = {'name':'alex'}
e = ('taibai','wusir')
return a + b
print(fun1(1,10,c = 3,d = [1,2,3],e = {'name':'alex'}))
2.形参
1)位置参数
原则:按照顺序,一一对应
2)默认参数
原则:给其传值,将原默认参数覆盖掉,不传值,不报错,使用默认值。
应用场景:不经常改变的参数,但是一直在用。
def msg(name,sex = 'man'): #当文件录入时,信息中的sex多为‘man’时可以将其定为默认参数
with open('msg','a',encoding='utf-8') as f:
f.write('{} {}
'.format(name,sex))
3)陷阱:默认参数为可变数据类型(面试必考)
可变的数据类型的默认参数,它始终使用的是一个,id值永远相同。
def func1(x,l1 = [])
l1.append(x)
return l1
print(func1(1))
#这时返回[1]
print(func1(100))
#这时返回[1,100],在此证明l1[]这个列表的是一个,id值相同