一、函数的概念
1.什么是函数
函数代表功能,也称“方法”,它是对数据与功能代码进行封装,实现了功能代码的复用
简单来说:函数就是把你要写的代码固定成一块,需要使用这个功能的时候直接调用即可
2.函数的分类
- python函数有四类,分别是:内置函数(builtin functions),标准库函数,第三方库函数,自定义函数。
- 内置函数:就是绑定给数据类型的函数,也叫数据类型方法,例如:list,int,float,dict等
ps:内置函数是你下载python的时候自带的代码,如折叠图 - 因为系统自带这个代码的缘故所以我们使用起来直接可以直接调用函数名,不需手动定义
- 内置函数也就是数据类型的内置方法
- 标准库函数:需要用import语句进行导入,常见标准库有time,os等
- 第三方库:需要另外下载到本地的库,例如opencv库,然后用import导入
- 自定义函数:自定义函数就是我们自己使用def定义的函数,自定义函数分有参数函数和无参函数还有空函数
1.无参数函数
def my_len():#括号里没有参数的都是无参函数
print(123)
2.有参函数
def my_len(a,b,c):#括号里有参数的都是有参函数
print(123)
但是要注意在调用阶段的时候也需要填写参数
3.空函数
def my_len():
pass #空函数就是使用pass或者用...三个点
空函数的作用就是再规划很多个功能的时候我先用函数块搭个大致框架,知道我该实现那些功能
就是当你不知道你的函数体该写啥的时候就用pass
返回值关键字:return
返回值:函数执行结束之后,返回的结果
def my_func():
print('helloword')
return 值
my_func() #可以直接调用 helloword
res = my_func()
print('my_func()')# 当函数没有返回值的时候,没有return的时候,返回的是none
print(res)#把函数的执行结果赋值给res变量,结果就是none,没有为什么这是固定的
return 的几种情况
1.return #当函数中只有return后面没有值的时候,返回的结果仍然是none
2.return 123 #当return后面有值的时候,你写什么就返回什么
3.return 123,456,789 #当return后面跟多个值的时候会组织成元组的形势返回
4.如果你想返回多个值的时候,最好使用容器类型包一下,比如你return字典返回就是字典
5.在函数中,只要遇到return关键字,代码立刻终止执行,一个函数最多只能有一个return,函数只要看见return直接停止运行
6.return,只能出现在函数中,if else中绝对不能出现
3.为什么要使用函数
∎ 我们现在基础阶段写的代码冗余性比较强,就是没用的东西太多了,就需要用函数去封装后面直接调用即可,其实我们的函数就是要模仿关键字的功能实现原理
∎ 我们现在写的代码兼容不强,我们在取元素的时候时不时的需要更改数据类型这样就很麻烦,实际上就改一下函数形参就好了
∎ 我们自己写的函数没有返回值(就是函数执行之后没有返回结果),需要依赖retune去给返回值
二、函数的定义与调用
函数的使用分为定义阶段与调用阶段,定义函数时只检测语法,不执行函数体代码,函数名加括号即函数调用,只有调用函数时才会执行函数体代码
- 函数必须遵循’先定义,后调用’的原则
- 函数的定义就相当于事先将函数体代码保存起来,然后将内存地址赋值给函数名
- 函数名就是对这段代码的引用,这和变量的定义是相似
def my_len(参数一,参数二):
'''函数体代码注释'''
print(123)#函数体代码
return 'hello' #返回值
参数解释:
1. def :定义函数的关键字
是代表定义或者说是申明一个函数,不能省略不然就不叫函数了
2. my_len :函数名,指向函数内存地址
就相当于是变量名,不唯一可以随意起名,遵循变量的命名规范,一定是见名知意,还有函数名后面的小括号不能省略,即使没有参数也不能省略
3. 括号:括号内定义参数(参数一,参数二) :什么是参数,参数就是你在使用函数前要满足的一定条件,参数可有可无,不一定是非要存在的,也可以是一个空括号
4. '''函数体代码注释''' :描述函数功能,参数介绍等信息的文档,可有可无,但是建议加上,从而增强函数的可读性;
5. 主要写函数功能的介绍,就是说要在这里写你这个函数是干嘛的啥功能,也就等于备注的意思,就比如可以说一下你这个参数代表的啥意思
6. print(123)函数体代码:函数体
就是把你写的代码放进去后面要用到这个代码的时候,直接调用改函数名就可以
7. return :返回值:定义函数的返回值,return是可有可无的
返回值的关键字是:return
return是一个函数结束的标志,函数内可以有多个return,但只执行一次函数就结束了,并把return后定义的值作为本次调用的结果返回。
参数是函数的调用者向函数体传值的媒介,若函数体代码逻辑依赖外部传来的参数时则需要定义为有参函数,
1.定义阶段
- 函数必须先定义后调用
- 函数在定义阶段,如果有参数,调用也需要给对应的参数
- 函数在定义阶段只检测语法是否正确,不执行具体的代码功能
- 只要def出现就已经到了函数的定义阶段
- 函数体为pass代表什么都不做,称之为空函数。用pass充当函数体“占位符”用来事先规划需要哪些功能使用的
def my_func(): # 只要有def出现就已经到了函数的定义阶段
print(123)#打印出来是空的
2.调用阶段
调用阶段是在函数外使用函数名去调用,函数名+() 代表执行此函数,不加括号不执行
def my_func(): # 只要有def出现就已经到了函数的定义阶段
print(123) # 没调用时打印出来是空的
my_func()#函数名+() 代表执行此函数
函数在调用阶段会执行具体的函数体代码
函数的调用是通过函数名调用的
1.语句形式:
foo()#加括号就调用
2.表达式形式:
m=my_min(1,2) #将调用函数的返回值赋值给m
n=10*my_min(1,2) #将调用函数的返回值乘以10的结果赋值给n
3.函数调用作为参数的形式:
m=my_min(1,my_min(2,3)) #my_min(2,3)作为函数my_min的第二个参数,实现了取1,2,3中的较小者赋值给m
3.函数的的底层原理
- 申请一块内存空间,存储函数体代码
- 把函数体代码绑定给函数名
- 通过调用函数(函数名())来执行函数体代码