模块化编程-函数
什么是模块化编程?
模块化编程是指把程序进行封装(函数封装、对象封装、文件封装等)
什么是函数?
function -> 函数、功能
函数就是一个具有特定功能的代码块
函数的作用?
函数就是把代码进行封装,以提高代码的重用性,提高开发效率,并且降低了后期的维护成本
函数的定义和使用
函数的定义格式:
1.函数定以后不调用不执行
2.不能再函数定义前调用函数
3.函数的调用不受次数影响
4.函数的命名要遵守命名规范
字母数字下划线,不能以数字开头
严格区分大小写,不能使用关键字
命名最好有意义,且不要使用中文
内置函数不冲突,冲突之后被覆盖
# 定义函数【基本结构】
def 函数名([参数列表]): # []代表非必传
当前函数的具体代码
。。。。
def love():
print('i')
print('love')
print('python')
# 函数封装完并不会执行,只是把函数定了而已
# 如果要使用定义的函数,那么需要用语法来调用函数
#函数的调用
函数名():
love()
love()
love()
。。。。#函数的调用不受次数限制
# 带有阐述的函数如何定义
函数的参数:
- 函数在定义时,可以在列表的位置定义形参
- 如果函数有形参,那么在调用时必须传递参数(实参)
- 实参将参数传递给形参的过程,本质上就是变量的赋值操作
def love(w):
print(f'ilove{w}')
# 调用带有形参的函数时需要传递实参
love('python')
函数中的参数类型
普通参数、默认参数、收集参数、命名关键字参数、关键字参数收集
普通参数就是位置参数,也叫顺序参数,是必须传递的参数
def func(x,y):
print(x,y)
func(1,2)
默认参数
#要求三个参数,至少传递两个,最后一个参数就是默认参数,默认参数需要在定义形参时指定默认值,默认参数必须排在普通参数后边
def func1(x,y,i=100):
print(x,y,i)
#没有传递参数,调用时使用默认值100
func1(1,2)
#覆盖默认参数
func1(1,2,3)
def func2(x=100,y,i=100): #x作为默认参数必须在y后面赋值,此时函数会报错
print(x,y,i)
收集参数 *args
#定义一个形参,专用手机多余的实参,可理解成实参未定,直接用一个形参(*args)接收,收集参数可以使用任意字符串命名
def func2(x=0,*args):
if x==0:
print('进行加法运算',args)
else:
print('减法运算',args)
func2(1,2,3,4) #agers是个元组,打印结果:减法运算 (2, 3, 4)
def func2(x=0,y=2*args):
pass
命名关键字参数
# 关键字参数定义在收集参数后面,关键字必须通过形参的名字进行传参
def love(a,b,c=3,*args,name):
print(a,b,c,*args)
print(args)
print(name)
#调用
love(1,2,4,2,2,2,name=5)
#在调用普通函数时需要按照顺序进行参数的传递
#也可以把普通函数的普通参数按照关键字参数进行传递
def love(name,age):
print(name,age)
#调用
love(name=1010,age='aaa')
关键字参数收集**args
def love(a,b,c=3,*args,name,age,**kwargs):
print(a,b,c)
# 普通手机参数,会把多余的参数收集成为元组
print(args)
#关键字参数收集,会把多余的关键字残守收集为字典(key:value)
print(kwargs)
#调用
love(1,2,3,a,b,name='python',age=12,sex='man',id=1)
所有参数的摆放
- 实参:普通实参在前,关键字参数在后
- 形参:
- 关键字收集参数一定在最后出现
- 收集参数推荐在普通参数之后使用
- 推荐顺序:普通形参,收集参数,关键字收集参数
函数返回值
函数除了可以满足功能之外,还可以返回所需的一些内容
函数使用return关键字指定返回数据,可以返回任意类型的数据
函数返回值可以将返回数据传递到调用方,调用方可以使用变量接收或用于判断等方式处理
没有返回值的函数
def love():
print('aaaa')
函数中指定返回内容,使用return关键字
def love(a,b):
res=f'{a} love {b}'
return res
print(love('i','python')
#函数体中return之后的代码不会被执行,return也代表函数体的结束
def love(x,y):
res=(x)
retrun res
print(y) #此行代码在return之后,不会被执行
函数的分类:
1.执行过程函数:函数体内完成一定的功能即可,没有返回值
2.返回值函数:函数体内完成一定的功能,并且返回一个结果到函数的调用出