1、什么是函数
可以重复调用
2、为什么要用函数
1、防止代码冗余
2、代码的可读性差
3、怎么用函数
1、定义函数-->制造工具
2、调用函数-->使用工具
1、无参函数: def index(): print('ok') 2、空函数: def login(): pass 3、有参函数 def login(username): print(username)
返回值:
1、不写return:默认返回None
2、只写return:只有结束函数体代码的效果,返回None
3、写return None:与只写return的效果相同
4、return返回一个值:可以将放回的结果,当做一个变量值来使用
5、return返回多个值:
1、将返回的多个值,默认存入元组返回
2、函数的返回值不想被修改
3、可以自己指定返回的数据类型
return:它是一个函数结束的标志,函数体代码只要执行到return,函数执行结束
函数的参数:
函数是先定义,后调用
在定义阶段只检测语法,
不执行任何代码
参数的类型
形参:是在函数定义阶段就规定的参数,它就相当于定义变量时的变量名
实参:是在函数调用阶段传入的参数,它相当于定义变量时的变量值
python代码从上到下依次执行
def index(a): #形参:相当于变量名
print(a)
print(b)
if a > b:
print(a)
else:
print(b)
a = 1
index(a) #实参:相当于变量值
b = 2
传参方式:
位置参数: 通过位置进行传参 关键字参数: 指定参数进行传参
ps:位置参数一定一定一定要在关键字参数之前, 连用的时候,不要对同一个形参重复赋值
默认参数:
在定义函数阶段就已经传入参数,
如果说你在传值的时候传入了一个新的参数,就会使用新参数
默认参数在传值的时候,不要将可变类型当做参数传递
应用场景:
当参数对应值重复出现的情况下使用默认参数
def reg(username,password,gender='male'):
print(f'用户名:{username},密码:{password},性别:{gender}')
reg('tank','dsb')
reg('jason',dsb)
reg('egon',xsb)
第一种解决
def reg(hobby,l1=None) #四个形参
if l1 == None:
l1 = []
l1.append(hobby)
print(f'爱好:{l1}')
reg(hobby = '生蚝')
reg('大保健')
reg('女教练')
第二种方法
def reg(hobby,l1):#四个形参
l1.append(hobby)
print(f'爱好:{l1}')
reg('生蚝',[])
reg('大保健',[])
reg('女教练',[])
可变长参数:
*args:接收所有溢出的位置参数,接受的值都被存入一个元组
官方认证:*args
只要有*就有可变长参数的效果
**kwargs:接收所有溢出的关键字参数,接收的值都被存入一个字典
官方认证:**kwargs
*:放到实参中就是打散
def func(a, b, c, d,**kw):
print(a, b, c, d,kw)
func(1, 2, c=3, d=4, e=5, f=6)
l1 = [1,2,3,4]
t1 = (1,2,3,4)
d1 = {'name':'tank','age':73}
print(*l1)
print(*t1)
print(d1)
函数名的命名规范与变量名一样
关键字(def)函数名(index)括号:
函数描述:描述函数体代码的功能
def index():
"""
from index
:return:
"""
print('hello world')
def login():
"""
登录
:return:
"""
pass
def register():
"""
注册
:return:
"""
pass