Python程序开发——第五章 函数
目录
- 一、函数的定义
- (一)def关键字定义函数
- (二)形参和实参
- (三)全局变量和局部变量
- 二、函数的调用
- 三、函数的参数传递
- (一)必需参数
- (二)关键字参数
- (三)默认参数
- (四)不定长参数
- 1、元组形式导入(*)
- 2、字典形式导入(**)
- 四、匿名函数
- 五、递归函数
一、函数的定义
函数,也就是为了提高代码复用性、降低代码冗余的一种方式,将功能代码定义为一个函数。
(一)def关键字定义函数
通过关键字def
来定义函数,函数要有函数名和参数以及函数体等等。
def后跟函数名和圆括号()
,括号内是参数(参数也可以为空,此时则称该函数为无参函数
),且函数内容以冒号:
来表示这个函数的起始。
函数内的内容,也就是函数体
,它是实现函数具体功能的代码。
另外还有return语句
,它用于将函数的处理结果返回给调用该函数一方或者退出函数,若函数没有返回值,则不需要加上return语句,即相当于返回none。
def 函数名 (参数或参数列表):函数体[return 语句]
(二)形参和实参
形参,即形式参数
,可以说它是虚拟变量,而实参,即实际参数
,即调用函数时传入的参数。
形参的目的是接收实参,被调用时分配内存单元,实参赋值给形参, 调用结束后, 形参释放所分配的内存单元 。注意实参是以按地址传递方式将值传递给形参,即实参的地址传递给形参
,实际上实参是程序中使用的参数。
(三)全局变量和局部变量
简单的来说,局部变量
是在函数内定义的变量,只能在定义它的函数中使用;而全局变量
,是定义在函数之外的变量,它可以在程序的任何位置使用。
在函数中只能访问全局变量,但不能修改全局变量,若要在函数内部修改全局变量的值,则需在函数中通过global
关键字声明。
例如下列python代码,在fein()函数中修改全局变量a,首先要对它该变量使用global关键字声明:
a = 1
def fein():global a#通过global关键字声明全局变量a *= 2print(a)fein()#调用fein()函数
运行结果如下:
二、函数的调用
通过函数名(参数或参数列表)
来调用函数。
下列python代码,input_number()函数是个无参函数,它通过input_number()来调用该函数,number_max()函数带有三个参数,在调用number_max()时向该函数传入了三个实参,该函数的功能是输出传入的参数:
def input_number():print("这是一个无参函数。")
def number_max(x, y, z):print(x, y, z)input_number()
number_max(3, 0, 1)
运行结果如下:
三、函数的参数传递
根据实参传递给形参的方式,可分为必需参数、关键字参数、默认参数和不定长参数。
(一)必需参数
必需参数,即将实参按照位置顺序
传递给形参。
如下python代码,div()函数中的实际参数和形式参数有相应的位置关系,分别传递给不同的形参:
def div(num1, num2, num3):print(num3 + num1 - num2)
div(3,2,9)
def content_input(content):print(content)content_input("内容。。。")
运行结果如下:
(二)关键字参数
可以通过形参=实参
的形式,根据形参的名称进行传递。
如下python代码:
def info(name, sex, age):print(f"名字:{name}")print(f"性别:{sex}")print(f"年龄:{age}")info(name="xiaoming", sex="男", age=18)
运行结果如下:
(三)默认参数
在调用函数时,若没有传递值给形参参数,则会使用默认参数
,即参数的默认值。若对带有默认值的形参传递,则实参的值会覆盖
设置的默认值。
另外函数中,调用默认参数应放在其它实参后。
例如下列python代码:
def info(name, sex, age, garde=1):print("名字: ", name)print("性别: ", sex)print("年龄: ", age)print("年级: ", garde)info(name="xiaoming", sex="男", age=18)
调用该函数时,由于未给garde传参,形式参数garde使用默认值1,运行结果如下:
若形式参数garde使用传入值,则会覆盖设置的默认参数,python代码如下:
def info(name, sex, age, garde=1):print(f"名字:{name}")print(f"性别:{sex}")print(f"年龄:{age}")print(f"年级:{garde}")info(name="xiaoming", sex="男", age=18, garde=2)
运行结果如下,输出的年级garde值为1,默认值garde=1被覆盖:
(四)不定长参数
当调用函数时,传入的参数不确定时
,就可使用不定长参数
,它可处理比声明时更多的参数。
1、元组形式导入(*)
在创建函数时,将参数前面加上*
,加上*号的参数被接收后会以元组
的形式导入。
下列python代码,调用函数时2传递给the_one形参,后面的3……都被传递给the_else形参:
def f(the_one, *the_else):print(the_one)print(the_else)f(2, 3, "s", "t", 0, "c")
运行结果如下:
2、字典形式导入(**)
在创建函数时,将参数前面加上**
,加上**号的参数被接收后会以字典
的形式导入。
下列python代码,调用函数时2传递给the_else形参,后面的a=0……都被传递给the_else形参:
def f(the_one, **the_else):print(the_one)print(the_else)f(2, a=0, b=0.1, c=0.2)
运行结果如下:
四、匿名函数
通过使用lambda
来创建匿名函数,它是一种无需定义函数名的函数,可以通过变量来记录该函数。
相比普通函数,其只能是单个表达式
,即lambda函数的语法中只包含一个语句,所以其功能比较单一
且不能被其它程序使用。
下列python代码,通过变量number_sum记录该匿名函数:
number_sum = lambda a, b, h: (a + b) * h * 0.5
print(number_sum(2, 3, 1.5))
运行结果如下:
五、递归函数
递归函数
,它可直接或间接地调用函数自身
。其中函数递归时,要有递归公式和边界条件,递归公式用于分解规模较大的问题为规模较小的问题,边界条件用于终止递归函数。
例如下列python代码:
def f(x):if x == 1:return 1else:return x + f(x - 1)print(f(4))
运行结果如下:
可以这样理解,通过递归依次求得f(x-1)的值,从而得到f(x)的值,如下图:
Python程序开发——第五章 函数相关推荐
- Python程序开发——第七章 模块与包
目录 一.模块的定义 二.导入模块.调用模块 (一)import语句 (二)from-import语句 三.标准模块库 (一)sys模块 (二)os模块 (三)random模块 (四)time模块 四 ...
- python - 啃书 第五章 函数
函数定义和调用 函数定义 函数是:组织好的,可重复使用的,用来实现单一或相关联功能的代码段. 在程序中,函数的使用能提高应用的模块性.代码的重用率和可读性. 自定义函数的一般格式为: def 函数名( ...
- Python程序开发——第六章 类与对象
目录 一.类 (一)类.对象 (二)类的定义 (三)对象的创建和使用 二.限制对象访问 (一)定义私有成员.方法 (二)访问私有成员.方法 三.构造方法和析构方法 (一)构造方法 (二)析构方法 四. ...
- Python程序开发——第四章 字典与集合
目录 一.字典 (一)字典的创建 (二)字典的访问 (三)字典的增删改查 1.字典的添加 2.字典的删除 3.字典的修改 4.字典的查询 二.集合 (一)集合的分类 (二)集合的创建 (三)集合元素的 ...
- Python程序开发——第三章 列表与元组
目录 前言 一.列表 (一)列表的创建 (二)访问列表元素 (三)列表的增删改 (四)列表的遍历 (五)列表的排序 (六)列表的嵌套 二.元组 (一)元组的创建 (二)访问元组元素 (三)元组的连接组 ...
- Python程序开发——第一章 基本python语法
目录 前言 一.PyCharm (一)创建工程文件夹 (二)创建 python 文件并运行 二.IDLE 三.Python中的注释用法 四.变量的命名事项 五.基本输入和输出函数 (一)输入和输出 ( ...
- 【python第五章——函数】
python第五章--函数 第五章--函数 5.1函数概述 5.2 函数进阶 下面部分之后再写 5.3函数习题(一些小例子) 第五章--函数 5.1函数概述 快速入门: #定义函数 def func( ...
- 《Go语言圣经》学习笔记 第五章函数
<Go语言圣经>学习笔记 第五章 函数 目录 函数声明 递归 多返回值 匿名函数 可变参数 Deferred函数 Panic异常 Recover捕获异常 注:学习<Go语言圣经> ...
- 第五章 函数和代码复用
第五章 函数和代码复用 5.1 函数的基本使用 5.1.1 函数的定义 定义:函数是一段具有特定功能的.可重用的语句组,用函数名来表示并通过函数名进行功能调用. 使用函数的目的:降低编程难度和代码重用 ...
最新文章
- 在启用sharepoint portal server 2003的SSO时,提示“无法连接到数据库服务器,请检查配置账户的权利”的问题的解决方法...
- Android UI之ImageButton(带图标的按钮)
- 安卓APP_ 其他(1) —— 程序的签名打包并在手机上运行
- (王道408考研操作系统)第二章进程管理-第一节4:进程通信(配合Linux)
- oracle 表字段顺序_Oracle数据库如何修改表中字段顺序
- Flink所使用到maven依赖
- java in array_ArrayList to Array Conversion in Java
- HDU2602(背包)
- 操作系统真象还原_一步步编写操作系统 43 二进制程序的加载方式3
- LaTeX组件:texlive2019+texstudio+sumatraPDF 安装包及学习手册
- 虚幻4 ai蓝图_高效AI自我监督学习的迷人蓝图
- MATLAB 神经网络函数
- “磁碟机”病毒疫情紧急!已有超过5万台电脑被感染
- 推荐3个快速开发平台 前后端都有 接私活又有着落了
- 【转载】《武学求真录》和《逝去的武林》及《老拳师的故事》 -3
- VSCode绿豆沙主题,爱护你的眼睛,丢掉深色背景
- 3D坦克大战游戏iOS源码
- 杭电 2072 单词数(题解+代码)
- 【POJ1182】食物链+思路+代码(较全)
- java轿煤悝炾厍桴,javascript实现根据汉字获取简拼