python函数

python函数

函数类似于工具,提前定义好了可以反复使用

image

函数语法结构

1.def

定义函数关键字(必须)

2.函数名

函数的名字,相当于变量名,函数名的命名风格与规范遵循变量名的(必须)

3.参数1,参数2

参数可以没有也可以有多个,表示使用函数前需要一些条件(不必须)

4.函数注释

类似于产品说明书,主要用于介绍函数功能,参数使用及其他情况(不必须)

5.函数体代码(重要)

函数的核心的代码逻辑(必须)

6.return返回值

使用函数后返回给使用者的结果(不必须)

image

函数的定义与调用

1.函数必须先定义在调用(顺序不能乱)

2.函数在定义阶段只会检查语法不执行代码

3.函数在调用阶段才会执行函数体代码

ps:调用函数需函数名加括号,如果函数在定义阶段有参数则在调用阶段也需要给参数

image

函数的分类

1.内置函数

python解释器自带的函数(提前定义好了,直接使用即可)

2.自定义函数

2.1有参函数

在函数定义阶段括号内没有写参数(变量名)

2.2无参函数

在函数定义阶段括号内写了参数(变量名)

2.3空函数

函数体代码为空,空函数本身没有意义,但是可以提前规定编写代码的思路

image

函数参数的两大分类

形式参数

在函数定义阶段括号内写的参数,简称"形参"

实际参数

在函数调用阶段括号内所写的参数,简称"实参"

ps:我们可以将形参看成变量名,实参看成变量值,两者在函数调用时临时绑定,运行结束后断开
形参的表现方式只有一种就是变量名,实参的表现方式有很多种(但是把握核心,就是数据值)

image

位置参数

按照从左到右的顺序依次填入的参数

位置形参

在函数定义阶段按照从左到右的顺序依次填入的变量名

位置实参

在函数调用阶段按照从左到右的顺序依次填入的数据值

ps:位置形参与位置实参在函数调用阶段,按照位子一一绑定,位置参数在绑定时多一个不行,少一个也不行

image

关键字实参(可以打破位置顺序)

在函数调用阶段通过形参名=数据值的形式指名道姓的传值

image

ps:格式越简单越靠前,格式越复杂越靠后

image

默认参数

默认形参

函数在定义阶段就可以给形参赋值了

该形参在调用阶段不给值则使用默认的
该形参在调用阶段如果给值,则使用给的值

image

ps:位置形参与默认值形参在定义的时候,位置形参必须在默认值前面,越简单越靠前,越复杂越靠后

可变长参数

可变长形参

函数无论传入多少位置参数都可以正常运行

一个星号用于接收多余的位置参数(*号后面建议跟args)

image

两个星号用于接收多余的关键字参数(**号建议跟kwargs)

image

两者联用

image

*会在实参中会将列表,元组的元素打散成位置参数一一传值

image

**号会在实参中将字典内键值对打散成关键字元素参数传入

image

函数参数补充

命名关键字参数

image

名称空间

名称空间就是存放变量名与变量值绑定关系的地方(类似民政局)

名称空间分类

内置名称空间(python解释器启动与关闭而创建和销毁)

image

python解释器提前给定义好的

全局名称空间(随着py文件的创建与结束而创建和销毁)

image

在python顶格编写的代码运行后会存入全局名称空间

局部名称空间

image

函数体代码运行后产生的都是局部名称空间

名字查找顺序

如果在局部

局部>>>全局>>>内置

如果在全局

全局>>>内置

局部空间的嵌套

image

特例

image

名称空间的作用域

作用域

名称空间所能够作用的范围

内置名称空间

程序任何阶段任何位置均可使用(全局有效)

全局名称空间

程序任何阶段任何位置均可使用(全局有效)

局部名称空间

一般情况下只在各自的局部名称空间中有效

image

global与nonlocal关键字使用

关键字global

image

关键字nonlocal

image

函数对象(函数名)

函数名遇到括号就会调用!!!

1.函数名可以当做变量名赋值

image

2.函数名还可以当做函数的实参

image

3.函数名可以当做函数的返回值

image

4.函数名可以当做容器类型(内部可以存放多个数据)的元素

image

函数的嵌套调用

嵌套调用就是函数内部调用其他函数

image

函数的嵌套定义

函数体内部定义其他函数

将复杂的功能全部隐藏起来,暴露一个简单的接口

image

闭包函数

闭:定义在函数内部的函数

包:内部函数使用了外部函数名称空间中的名字

只有符合上述两个特征的函数才可以称之为"闭包函数"

image

闭包函数其实是给函数传参的第二种方式

image

装饰器

器:指的是工具

装饰:给被装饰对象添加额外的功能

装饰器原则

开放封闭原则

开发:对扩展开放
封闭:对修改封闭

装饰器核心思想

在不改变被"装饰对象内部代码"和"原有调用方式"的基础之上添加额外功能

统计index函数的执行时间

image

未完待续...image

posted @ 2021-11-12 17:15  Zzy的Bk  阅读(107)  评论(0)    收藏  举报