致命三问,他来了他来了……
什么是函数?
函数就是一种工具,可以重复使用(比如说光头强砍树,他用的电锯就是他的工具,而函数就是我们的工具)
为什么要用函数?
1、防止代码冗余
2、增强可读性
怎么用函数?
PS:函数的命名规则和变量名是一样的
函数的使用:定义函数——>>>调用函数
PS:函数是先定义,再调用,在定义阶段只检测语法,不执行代码。
定义函数:
def index(): # 定义函数 '''打印hello world''' # 函数描述:代码体的功能或操作 print('hello word') # 代码体(实现某种功能) index() # 调用函数
函数的三种形式
1、无参函数
def index(): #index中没有参数 print('ok') f = index()
2、空函数
del index(): pass
3、有参函数
def login(username,age): #传入形参username,age print(username,age) #打印username,age login('姓名:kang','年龄:21')#传入实参姓名:kang年龄:21
函数的调用有三种方式
1、直接调用:直接用函数名,比如说上边的代码就是直接调用
2、定义变量接受,再次返回变量
def index(): print('ok') f = index() #把函数定义成变量f print(f) # 打印变量f
3、将函数当参数使用
def index(a,b): # 定义形参a,b if a > b: # 如果a>b return a # 返回a else: # 如果不是 return b # 返回b print(index(1,2)) # 定义实参a=1,b=2
函数的返回值(return)
return:一个函数结束的标志,函数代码体但只要执行到return,函数执行结束
1、不写return:默认返回None
2、只写return:只有结束函数体代码的效果,返回None
3、写return None:和只写return一样
4、return返回一个值:返回当作一个变量来使用
5、return返回多个值:
①将返回的多个值存入元组(函数返回的值不想被修改)
②可以自己制定返回的数据类型
函数的参数
形参
是在函数定义阶段就规定的参数,它就相当于定义变量时的变量名
def login(username,age): # 定义形参 print(username,age) login('姓名:kang','年龄:21')
实参
函数调用阶段传入的参数,它就相当于定义变量时的变量值
def login(username,age): print(username,age) login('姓名:kang','年龄:21') # 定义实参
位置参数
通过位置进行传参
def index(age,QQ): print(age,QQ) index('21','123456') #age = 21,QQ = 123456
关键字参数
指定参数进行传参
def index(age,QQ): print(age,QQ) # 打印age QQ index(QQ='123456',age='21') # age = 21,QQ = 123456
PS:位置参数和关键字参数可以混用,但是位置参数必须在关键字参数前面,混用时不要对同一个形参重复赋值
def index(age,QQ): print(age,QQ) # 打印age QQ index('21',QQ='123456') # age = 21,QQ = 123456
默认参数
在定义函数阶段就已经传入参数,如果说你在实参中传入了一个新的参数,就会使用新参数
def index(age='21',QQ='456'): # age默认为21,QQ默认为456 print(age,QQ) # 打印age QQ index(QQ='123456')
PS:当参数对应值重复出现的情况下,使用默认参数
可变长参数
*args(官方认证)
接收用户所溢出的位置参数,接收的值都被存入一个元组
def index(name,age,QQ,*args): print(name,age,QQ,args) index('kang',21,456789,15013131313,'篮球')
**kwargs
接收所有溢出的关键字参数,接收的都被存入一个字典
def index(name,age,QQ,**kwargs): print(name,age,QQ,kwargs) index(name='kang',age=21,QQ=456789,phon=15013131313,hobby='篮球')