模块化编程是指把程序进行封装(函数封装、对象封装、文件封装等)
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)接收,收集参数可以使用任意字符串命名 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')
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')
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.返回值函数:函数体内完成一定的功能,并且返回一个结果到函数的调用出