第九天笔记

一.定义函数的三种形式:

1.1无参函数

def foo():        print('from foo')

foo()

1.2有参函数

def bar(x,y):

      print(x,y) bar(1,2)

1.3空函数

二.调用函数的三种形式

2.1语句形式

2.2表达式形式

2.3可以当做参数传给另外一个函数

三.函数的返回值需要注意:

1.返回值没有类型限制

2.返回值没有个数限制

2.1返回1个值:调用函数的结果就是一个值

2.2返回多个值:结果就是一个元组

2.3返回0个值,或者不写return:调用函数的结果就是None

四.return关键字:return是函数结束的标志,函数内可以有多个return,但只要执行一次,整个函数就结束了。

五.函数的参数分为俩大类:

1.形参: 指的是在定义函数阶段括号内指定变量名,即形参本质就是"变量名"

2.实参: 指的是在调用函数阶段括号内传入的值,即实参本质就是""

形参与实参的关系:在调用函数时,会将实参()赋值(绑定)给形参(变量名),这种绑定关系在函数调用时临时生效,在调用结束后就失效了

六.形参与实参的具体分类

一 位置参数

1.1 位置形参: 在定义函数阶段按照从左到右的顺序依次定义的形参,称之为位置形参

 注意:但凡按照位置定义的形参,必须被传值,多一个不行,少一个也不行

1.2 位置实参: 在调用函数阶段按照从左到右的顺序依次传入的值,称之为位置实参

注意:但凡按照位置定义的实参,会与形参一一对应

二 关键字参数 关键字实参: 在调用函数阶段,按照key=value的形式指名道姓地为形参传值

1. 可以完全打乱顺序,但仍然能指名道姓为指定的形参传值

2. 可以混合使用位置实参与关键字实参,但是必须注意:
2.1 位置实参必须放到关键字实参前面
2.2 不能对一个形参重复赋值
三 默认参数
默认参数:指的是在定义函数阶段,就已经为某个形参赋值了,改形参称之为有默认值的形参,简称默认形参
注意:
1. 在定义阶段就已经被赋值,意味着在调用阶段可以不用为其赋值
2. 位置形参应该放到默认形参前面
3. 默认参数的值在函数定义阶段就已经固定死了
4. 默认参数的值通常应该是不可变类型
位置形参vs默认形参
对于大多情况下传的值都不相同的,应该定义成位置形参
对于大多情况下传的值都相同的,应该定义成默认形
四 可变长度的参数
站在实参的角度,参数长度可变指的是在调用函数时,传入的实参值的个数不固定
而实参的定义方式无法两种:位置实参,关键字实参,对应着形参也必须有两种解决方案***,类分别应对溢出的位置实参与关键字实参
1. 在形参中带*:会将调用函数时溢出位置实参保存成元组的形式,然后赋值*后的变量名
 2. 在实参中带*: 但凡在实参中带*星的,在传值前都先将其打散成位置实参,再进行赋值
3. 在形参中带**:会将调用函数时溢出关键字实参保存成字典的形式,然后赋值**后的变量名
4. 在实参中带**: 但凡在实参中带**星的,在传值前都先将其打散成关键字实参,再进行赋值
5. 规范: 在形参中带***,*后的变量名应该为args,**后跟的变量名应该时kwargs
当我们想要将传给一个函数的参数格式原方不动地转嫁给其内部的一个函数,应该使用下面这种形式
五 命名关键字参数: 放到***之间的参数称之为命名关键字参数
注意: 命名关键字参数必须按照key=value的形式传值
原文地址:https://www.cnblogs.com/zhouhao123/p/9455758.html