1.什么是函数:
函数就是一种工具
可以重复调研
2.为什么要用函数
1)防止代码冗余
2)代码可读性差
3.怎用函数
1)定义函数 ——————>制造工具
2)调用函数 ——————>使用工具
关键字 函数名+括号:
#函数描述:函数体代码的功能
函数名的命名规范与变量名一样
def index(): print('Hello world') print(index()) Hello world None
1.无参函数
def index():
print('ok')
2.空函数
def login ():
pass
3.有参函数
username = 'sean'
password = '123'
def login(username,password):
print(username,password)
return :它是一个函数结束的标志,函数体代码,只要执行到return,函数执行结束
1.不写return:默认返回none
2.只写return:只有结束函数体代码的效果,返回none
3.写return none:与return效果一样
4.return返回一个值:可以将返回的结果,当作一个变量值来使用
5.return返回多个值:
1)将返回的多个值存入元组后返回(默认)
2)函数的返回值不想被修改
3) 可以自己指定返回的数据类型
函数参数:
函数先定义后调用,在定义阶段只检测语法
形参:
是在函数定义阶段就规定的参数,它就相当于变量名
实参:
是在函数条用阶段传入的参数,它相对于定义变量时的变量值
注意:
def index(a): print(a) print(b) a=1 b=1 index(a) 结果: 1 2 def index(a): print(a) print(b) a=1 index(a) b=1 报错
位置参数:
通过位置进行传参
def foo(a,b): print(a,b) fool(2,1) 结果: 2 1
关键字参数:
指定参数进行传参
ps:
位置参数一定要在关键字参数之前,连用时不要对同一个形参重复赋值
默认参数:
在定义函数阶段就已经传入参数,如果说你在实参的时候传入了一个新的参数,就会使用新参数,默认参数在传值时,一般不要将可变类型当作参数传递
# 第一种 def register(username, age, hobby, l1=None): if not l1: l1 = [hobby] print(username, age, hobby, l1) register('root', 15, 'read') register('ios', 55, 'study') register('btn', 45, 'learn') # 第二种 def register(username, age, hobby): l1 = [hobby] print(username, age, hobby, l1) register('root', 15, 'read') register('ios', 55, 'study') register('btn', 45, 'learn') 执行结果: root 15 read ['read'] ios 55 study ['study'] btn 45 learn ['learn']
应用场景:
当参数对应值重复出现的情况下使用默认参数
可变长参数
官方认证:*args:可以接收所有溢出的位置参数,接收的值存于元组中(args)
只要有*就有可变长参数的效果
*打散你传入的容器类型 位置参数
**kwargs :接收所在溢出的关键字参数,存在于字典中(kwargs)*字典 返回key