函数是可以重复使用的用于实现某种功能的代码块
树图思维导图提供 第六章 函数 在线思维导图免费制作,点击“编辑”按钮,可对 第六章 函数 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:9cf5df18c3266ba8ca71f1637fc33e9a
第六章 函数思维导图模板大纲
函数是可以重复使用的用于实现某种功能的代码块
基本定义及调用
定义的语法----def 函数名(参数列表):函数体
定义函数需遵守的规则
1.函数代码块从形式上包含函数名部分和函数体部分
2.函数名部分以def关键字开头,后接函数标识符名称和圆括号“()”,以冒号“:”结尾
3.圆括号内可以定义参数列表(可以为0个、1个或多个参数),即使参数个数为0,圆括号也必须有;函数形参不需要声明其类型
4.函数的第一行语句可以选择性地使用文档字符串存放函数说明
5.函数体部分的内容需要缩进
6.使用“return[表达式]”(方括号表示可写可不写其中的内容)结束函数,选择性的返回一个值给调用方,不带表达式的return语句相当于返回None
函数定义完成后就可以直接被调用
文档字符串
函数的第一行语句可以选择性地使用文档字符串存放函数说明
关于文档字符串的约定
1.第一行应为对象目的的简要描述
2.如果有多行,则第二行应为空白行。其目的是将摘要与其他描述从视觉上分隔开。
可以使用内置函数help(函数名)或者“函数名.__doc__”来查看函数的注释
函数标注
函数及函数的形参都可以不指定类型,但是这往往会导致在阅读程序或函数调用时无法知道参数的类型
函数标注是关于用户自定义函数中使用的参数类型的元数据信息,它以字典的形式存放在函数的“__annotations__”属性中,并且不会影响函数的任何其他部分。
形参的标注方式是在形参后加冒号和数据类型,函数返回值的标注方式是在形参列表和def语句结尾的冒号之间加上复合符号“->”和数据类型
函数标注仅仅是标注了参数或返回值的类型,但并不会限定参数或返回值的类型,在函数定义和调用时,参数和返回值的类型是可以改变的
return语句
1.用于退出函数
2.选择性地向调用方返回一个表达式
3.不带表达式的return返回None
变量作用域
函数内部定义的变量一般为局部变量,函数外部定义的变量为全局变量
变量起作用的代码范围称为“变量作用域”
变量的作用域都从定义的位置开始,在定义之前访问会报错。在独立代码文件中,直接使用没有定义的变量也会报错
即使全局变量与局部变量名称相同,但由于作用域不同,故其值也不同
在函数内部可以通过global定义的方式来定义全局变量,该全局变量在函数运行结束后依然存在并可访问
函数的递归调用
构成递归的条件
1.子问题与原问题为同样的问题,但规模小更为简单
2.调用本身须有出口,不能无限制调用,即有边界条件
匿名函数即没有采用def语句定义函数的标准方式,而用lambda方式来简略定义的函数
lambda表达式只可以包含一个表达式,常用于不想定义函数但又需要函数的代码复合功能的场合
匿名函数(lambda表达式)的特点
1.只包含一个表达式,函数体比def简单很多,所以更简洁
2.它的主体是一个表达式,而不是一个代码块,故只能封装有限的逻辑
匿名函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数
匿名函数的定义----匿名函数名=lambda[arg1[,arg2,......argn]]:expression【arg*为参数列表,expression为表达式,表示函数要进行的操作】
参数是函数的重要组成成分。函数定义语法中,函数名后括号内的参数列表是用逗号分隔开的形参,可以包含0个或多个参数。在调用函数时,向函数传递实参,根据不同的实参参数类型,将实参的值或引用传递给形参
变量本身并无类型,也不直接存储值,而是存储了值的内存地址或者引用(指针)
给函数传递不可变对象
对于不可变对象的实参,传递给函数的仅仅是值,函数不会影响其引用(存放地址)
给函数传递可变对象
函数可变对象的实参,事实上是把值和引用都传递给形参。函数内部对形参的改变,同时也改变了实参
关于参数传递的总结
1.不可变对象----对于函数fun(a),调用时传递不可变对象类型的值给a,传递的只是a的值,没有影响a对象本身。如果在fun(a)内部修改a的值,则新生成一个a
2.可变对象----对于函数fun(la),调用时传递可变对象类型的值给la,则是将la真正地传递过去,在函数fun(la)内部修改la后,函数fun(la)外部的la也会受影响
位置参数
在函数调用时是必须有的,而且顺序和数量都要与声明时保持一致【缺一不可,也不可多】
关键字参数
在函数调用时,参数的传入使用了参数的名称,则该类参数称为关键字参数。
它可以允许函数调用时参数的顺序与声明时不一致,故在函数调用中,关键字参数放置的顺序可以随意,但是关键字参数必须跟随在位置参数的后面
默认参数
如果在函数定义时,某个参数使用了默认值,则该参数是默认参数;如果函数调用时没有传递该参数,则使用默认值
不定长参数
函数参数的个数不确定时,往往需要用到不定长参数
不定长参数的定义方式
*parameter----接受多个实参并将其放在一个元组中
**parameter----接受键值对并将其放在字典中
特殊形式
Python为确保可读性和运行效率,可以对参数传递形式进行限制:通过在函数定义的参数列表中增加“/”或“*”(可选),确定参数项是仅按位置、按位置也按关键字,还是仅按关键字传递;若二者皆未使用,则参数类型可以是位置参数或者是关键字参数
参数传递的序列解包
函数定义的参数列表如果包含多个位置参数的形参,则可以用列表、元组、集合、字典或其他可迭代的对象作为实参来进行参数传递,需要在实参名字前加一个星号(*),此时Python解释器会对实参进行所谓的解包操作,将序列中的值分别传递给多个单变量的形参
单个星号(*)是对参数传递的序列解包的情形,而两个星号(**)则是针对字典的值进行解包的
树图思维导图提供 第六章 群体传播与组织传播_副本 在线思维导图免费制作,点击“编辑”按钮,可对 第六章 群体传播与组织传播_副本 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:1672f555831e7d9a3bb2cf2fb792cb49
树图思维导图提供 软考软件设计师 在线思维导图免费制作,点击“编辑”按钮,可对 软考软件设计师 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:6a80d6e336e8d531c07d47352540a4df