概念:
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。所谓函数,就是把具有独立功能的代码块组织成为一个小模块,在需要的时候调用。

作用:
在开发时,使用函数可以提高编写的效率以及代码的重用,需要在程序中多次执行同一项任务时,你无需反复编写完成该任务的代码,而只需调用该任务的函数,让python运行其中的代码,你将发现,通过使用函数,程序编写,阅读,测试和修复都将更容易。

定义函数:
def 函数名 ( ):
函数封装的代码
1.def是英文define的缩写
2.函数名称应该能够表达函数封装代码的功能,方便后续的调用
3.函数名称的命名应该符合标识符的命名规则
可由字母,下划线和数字组成
不能以数字开头
不能与关键字重名

形参与实参:
参数的作用:
把具有独立功能的代码块组织成为一个小模块,在需要的时候调用函数的参数,增加函数的通用性,针对相同的数据处理逻辑,能够适应更多的数据
1.在函数内部,把参数当作变量使用,进行需要的数据处理
2.函数调用时,按照函数定义的参数顺序,把希望在函数内部处理的数据,通过
参数传递
形参和实参:
形参:定义函数时,小括号中的参数,是用来接收参数用的,在函数内部作为变量使用
实参:调用函数时,小括号中的参数,是用来把数据传递到函数内部用的

一、函数的创建和调用

定义函数,不会去执行函数;

想要执行函数,需要调用函数:调用函数的方法:函数名()

1、创建一个无参数函数;调用函数,执行函数里面的代码

python自定义函数内调用自身 python自定义函数的好处_python自定义函数内调用自身

2、加法函数:括号里是形式参数;必须给传值;add里面是实参

python自定义函数内调用自身 python自定义函数的好处_调用函数_02

3、平方函数;括号里是形式参数;x叫必须参数,必须传值;y=2叫默认参数,可以传值,不传值时是默认值

python自定义函数内调用自身 python自定义函数的好处_调用函数_03

4、多值相加:括号里是形式参数;*args叫可变参数,可以传多个值,args是元组的数据类型

python自定义函数内调用自身 python自定义函数的好处_局部变量_04

5、**kwargs叫关键字参数,调用时可以传多个key-value的值;kwargs是字典的数据类型

python自定义函数内调用自身 python自定义函数的好处_局部变量_05

注意:当有多个形式参数时,顺序:必须参数>默认参数>可变参数>关键字

简单的练习:

1)、浮点之间的计算

python自定义函数内调用自身 python自定义函数的好处_python自定义函数内调用自身_06

2)、格式化的输出计算

python自定义函数内调用自身 python自定义函数的好处_python自定义函数内调用自身_07

3)、经典小星星

python自定义函数内调用自身 python自定义函数的好处_局部变量_08

python自定义函数内调用自身 python自定义函数的好处_调用函数_09

4)、九九乘法表

python自定义函数内调用自身 python自定义函数的好处_局部变量_10

二、函数的返回值

在程序开发中,有时候,会希望一个函数执行结束后(举例子:温度计函数,要返回给我们当前的温度,告诉调用者一个结果,以便调用者针对具体的结果作出后续的处理,返回值是函数完成工作后,最后给调用者的一个结果,在函数中使用return关键字可以返回结果,调用函数一方,可以使用变量来接收函数的返回结果

1、函数一般是有return返回值的;想要打印返回值,必须要print

python自定义函数内调用自身 python自定义函数的好处_python自定义函数内调用自身_11

2、在python中,如果没有return时,默认返回一个None

python自定义函数内调用自身 python自定义函数的好处_数据_12

练习:

python自定义函数内调用自身 python自定义函数的好处_调用函数_13

python自定义函数内调用自身 python自定义函数的好处_调用函数_14

调用模块文件:
每一个python源文件都可以是一个模块文件,可以在一个python文件中定义函数或者变量,然后在另一个文件中使用 import filename 导入这个模块,导入之后,就可以使用 模块名.变量/模块名.函数的方式,使用这个模块中定义的函数和变量

python自定义函数内调用自身 python自定义函数的好处_局部变量_15

三、函数的作用域

局部变量和全局变量:
局部变量是在函数内部定义的变量,只能在函数内部使用
全局变量是在函数外部定义的变量,(没有定义在某一个函数内),所有函数内部都可以使
用这个变量

局部变量:
局部变量是在函数内部定义的变量,只能在函数内部使用
函数执行结束后,函数内部的局部变量,会被系统回收
不同的函数,可以定义相同的名字的局部变量,但是各用各的不会产生影响

局部变量的作用:
在函数内部使用,临时保存函数内部需要使用的数据

1、函数里面的变量只在函数内部生效

python自定义函数内调用自身 python自定义函数的好处_数据_16


python自定义函数内调用自身 python自定义函数的好处_数据_17

2、不同的函数可以定义相同名字的局部变量,但是不会产生影响

python自定义函数内调用自身 python自定义函数的好处_python自定义函数内调用自身_18

3、global是声明局部变量为全局变量的关键字

python自定义函数内调用自身 python自定义函数的好处_数据_19

4、在开发的时候,应该把模块中的所有全局变量定义在其他函数上方

python自定义函数内调用自身 python自定义函数的好处_数据_20


python自定义函数内调用自身 python自定义函数的好处_调用函数_21


python自定义函数内调用自身 python自定义函数的好处_调用函数_22

四、函数应用

在python中
变量和数据是分开存储的
数据保存在内存中的一个位置
变量中保存的是数据在内存中的地址
变量中记录数据的地址,就叫做引用
使用id()函数可以查看变量中保存数据所在内存的地址

1.传参时:

python自定义函数内调用自身 python自定义函数的好处_数据_23

2.返回值时:

python自定义函数内调用自身 python自定义函数的好处_python自定义函数内调用自身_24

五、函数的装饰器

把一个函数当作参数,传给函数,返回一个加强版的函数
   本质上是一个返回函数的函数
   "在不改变原函数的基础上,给函数增加功能"

1、需求func1函数的执行结果前加一串 * ,但不改变原函数。

首先:

python自定义函数内调用自身 python自定义函数的好处_python自定义函数内调用自身_25


再用:

python自定义函数内调用自身 python自定义函数的好处_局部变量_26

2、应用装饰器:

python自定义函数内调用自身 python自定义函数的好处_调用函数_27


若改变age的值:

python自定义函数内调用自身 python自定义函数的好处_数据_28

3、 装饰器的标准写法格式

python自定义函数内调用自身 python自定义函数的好处_python自定义函数内调用自身_29

4、调用装饰器

python自定义函数内调用自身 python自定义函数的好处_局部变量_30


python自定义函数内调用自身 python自定义函数的好处_调用函数_31

5、【很重要】当函数内有return时,如何用装饰器调用

python自定义函数内调用自身 python自定义函数的好处_python自定义函数内调用自身_32


python自定义函数内调用自身 python自定义函数的好处_调用函数_33