函数的本质
- 刚开始的时候我们可以把函数当成一个工具 提前准备好 等到需要使用时候就可以拿出来使用了。(必须是提前定义好,而后才可以进行使用)
- 我们在往后会说成调用函数 或者函数的调用
函数的语法与结构
-
def函数名(参数1,参数2):
函数注释:用来给函数进行解释
函数代数体:缩进行构成了函数体
return:这是函数的返回值
-
def 是定义函数的关键字
-
函数名与变量名一致 要做到让我们见名就知道意思
-
括号在定义函数的时候后面必须加上括号
-
参数是在函数括号内写的,个数不固定,也可以不写用于接收外界传递给函数的整体代码内部的数据
-
函数注释就类似于说明书 用于介绍函数的功能和用法
-
函数体代码:整个函数的中心的 重要的部分
-
return 控制函数的返回值
函数的定义与调用
- 函数是必须先进行定义好的而后在进行的使用的
- 定义函数需要使用def关键字调用函数需要使用函数名+(在这个括号内可能需要添加相应的参数)
- 函数在被定义的阶段值检测函数体代码语法 不执行函数体的代码 只有在调用的阶段才会真正的去执行函数体代码
- 函数名就是绑定的一块内存地址 里面存了很多的的代码 如果需要使用需要进行调用 函数名+()
函数名+()执行优先等级是最高的 (除了定义阶段)
函数的分类
- 解释器提前帮我们定义好的函数用户可以直接调用 len()
内置函数是可以直接调用的 但是数据类型的函数内置方法必须使用数据类型点的方式才可以进行调用 这也就是数据类型独有的一些内置方法
自定义函数
* 空函数体代码使用pass代替 暂时没有任何功能 主要用于前期的项目搭建 提醒主要功能
def run():
pass
* 无参函数体是在定义阶段括号内没有填写的参数
def func():
print('from func')
无参函数直接函数名+()进行调用
*有参函数是在函数定义阶段括号内填写的参数
def func(a,b):
parnt(‘from func’)
调用有参函数需要函数名+()并且给上数据值
函数的返回值
返回值就是调用函数后产生的结果 可有可无 获取函数值返回的方式是固定的 变量名=函数() 有返回值就获取 没有给到none
* 函数体代码没有return关键字默认返回None
def func():
print('from func')
res = func()
print(res) =None
* 函数体代码有return关键字后面写也是返回None
def func():
print('from func')
return
res = func()
print(res) = None
* 函数体代码有return关键字,后面写什么就返回什么 如果是数据值就烦直接返回 如果是变量就需要找到相对应的数据值返回
def func():
print('from func')
return 666
res = func()
print(res)
def func():
print('from func')
name = 'yqb'
return name
res = func()
print(res) = yqb
* 函数体代码有return关键字并且后面写了很多歌数据值用逗号隔开在这种情况下默认用元组的方式进行返回
def func():
return 1, 2, 3, 4
res = func()
print(res) # (1, 2, 3, 4)
def func():
return [1, 2, 3, 4]
res = func()
print(res) # [1, 2, 3, 4]
def func():
return [1, 2, 3, 4],{'name':'yqb'},123
res = func()
print(res) = [1, 2, 3, 4]
* 当函数体代码遇到return关键字就会立刻结束函数体代码的运行
def func():
print('我在上面')
return 123
print('我在下面')
func()
函数的参数
- 函数的参数分为两大类 1形式参数在函数定义的阶段内填写的参数==形参 2实际参数实在调用阶段括号内填写的参数==实参
形参就相当于变量名 实参就相当于数据值 在函数调用阶段形参会临时与实参进行绑定 函数运算立刻结束
位置参数
- 位置形参在函数中定义阶段括号内从左到右依次填写的变量名称之为位置形参
- 位置实参实在函数调用阶段括号内从左到右依次填写的数据值称之为位置实参
实参可以是数据值也可以是绑定了数据值的变量名.给位置形参传值时必须个数一致 多一个少一个都不可以的
关键字参数=关键字实参
- 在函数调用阶段括号内以什么等于深恶的形式传值称之为关键字实参
指名道姓的给形参传值 位置实参必须在关键字前面(不管是形参还是实参都必须遵循简短的在前面 复杂的在后面) 同一个形参再一次调用中只能传一次值
def func(a, b):
print(a, b)
func(1, 2)
func(b=1,a=2)
func(b=1,2)
func(2,b=1)
func(666,a=1)
默认值参数=默认值形参
在函数定义阶段括号内以什么等什么的形式填写的形参称之为默认值形参
在函数定义阶段就将形参绑定值 在后续使用就可以不传。顶用阶段不传值就使用默认的传了值就用传了的值。也得遵循简单的在左边 复杂的在右边
可变长形参
* 可以打破形参与实参的个数限制 随意传值
def func(* x):
print(x)
在形参的作用中接受多余的位置参数并组成元组的形式赋值给* 后面的变量名
def func(* * y):
print(y)
func() = {}
func(name='yqb') = {'name': 'yqb'}
func(name='yqb',age=18) = {'name': 'yqb', 'age': 18}
func(name='yqb',age=28,hobby='run') = {'name': 'yqb', 'age': 28, 'hobby': 'run'}