一、函数/方法
1.基本使用:定义、调用、参数、返回值、封装函数、匿名函数
https://blog.youkuaiyun.com/m0_57975635/article/details/128144918?spm=1001.2014.3001.5502
2.进阶使用:闭包、变量的作用域、高阶函数、装饰器、递归【了解】
1.概述
在一个完整的项目中,某些功能可能会被反复使用,如果将反复出现的代码封装成函数,以后如果要继续使用该功能则直接使用函数即可,另外,如果要修改需求,只需要修改函数
本质:对某些特殊功能的封装
【面试题】优点:
a.简化代码结构,提高应用的模块性
b.提高了代码的复用性
c.提高了代码维护性
# 需求:求圆的面积 # 1. r1 = 45 area1 = 3.14 * r1 ** 2 print(area1) r2 = 10 area2 = 3.14 * r2 ** 2 print(area2) r3 = 5 area3 = 3.14 * r3 ** 2 print(area3) # 2.优化 # 本质:对某些特殊功能的封装 def area(r): return 3.14 * r ** 2 print(area(45)) print(area(10)) print(area(5))
2.定义
语法:
def 函数名(变量1,变量2....): 函数体 return 返回值说明:
a.def是一个关键字,是definition的缩写,专门定义函数
b.函数名:遵循合法标识符的规则和规范即可,尽量做到见名知意
c.(变量1,变量2....):被称为形式参数,是一个参数列表,都只是没有赋值的变量
d.函数体:封装某些特殊的功能
e.return是一个关键字,表示返回,只能用在函数中,表示结束函数,可以单独使用,也可以携带数据,当携带数据,则表示该函数的返回值
f.返回值:常量,变量,表达式
g.函数的定义分为两部分:函数的声明和函数的实现
h.变量1,变量2.... 和 return 返回值 可以根据具体的需求选择性的省略
""" 语法: def 函数名(变量1,变量2....): 函数体 return 返回值 变量1,变量2.... :形式参数,简称形参 return 返回值 :返回值 """ # function:功能 print("start") # 1.无参无返回值 def func1(): print("ok~~~1111") # 2.有参无返回值 def func2(a): print('ok~~~2222') # 3.无参有返回值 def func3(): print('ok~~~~3333') return 10 # 4.有参有返回值 def func4(a,b): print('ok~~~~~~4444') return 'abc' print('end') """ 注意: 1.定义函数相当于定义变量,简单来说,将函数加载到了内存中 2.一个函数一旦被定义,需要手动调用它,否则无法执行 """
3.调用
# 1.函数调用的基本使用 # a.定义:函数的声明和函数的实现 def func(): print("abc") # b.调用 """ 语法: a.函数的定义 def 函数名(形参): pass b.函数的调用 函数名(实参) 注意: 1.函数调用的本质:就是使用函数的过程/执行函数内部代码的过程 2.调用函数的过程中,一定要注意传参的问题 3.形式参数:简称形参,出现在函数的声明部分,实际上就是一个变量,等待实参赋值 4.实际参数:简称实参,出现在函数的调用部分,实际上就是一个数据【常量,变量,表达式】,目的是为了给形参赋值 5.传参:在调用函数的过程中,实参给形参赋值的过程 """ # a.无参 func() # b.有参 def func1(num1,num2): print('hello~~~~~~') print(num1 + num2) # func1() # TypeError: func1() missing 2 required positional arguments: 'num1' and 'num2' # func1(34) # TypeError: func1() missing 1 required positional argument: 'num2' func1(12,45) print("*" * 50) # 2.函数之间的相互调用 # a.正常使用 def check1(): print('ok~~~1111') check2() def check2(): check3() print('ok~~~2222') def check3(): print('ok~~~3333') check1() # b.有问题的使用 # 恶意调用一 # def a(): # print('aaaaa') # a() # a() # 恶意调用二 # def a(): # print('aaaaa') # b() # def b(): # print('bbbbb') # a() # a() """ 注意: 1.函数之间可以相互调用 2.代码在执行的过程中,一旦遇到某个函数的调用,则优先执行该函数,当该函数执行完毕好,回到调用函数的地方,继续执行后面的代码 3.一定要避免函数之间的恶意调用 """