- 119
- 0
- 约3.81千字
- 约 51页
- 2019-08-17 发布于浙江
- 举报
PYTHON程序设计
Python程序设计
第6章 Python函数定义与使用
Python程序设计
6.1 函数的理解与定义
6.2 参数传递与返回值
6.3 作用域
6.4 递归
Python程序设计
函数定义
函数调用
函数的理解与定义
函数的理解与定义
函数的定义
求取包含10个斐波那契数
函数的理解与定义
函数的定义
如何让代码按照用户指定的最终要求取得序列的长度?
或许还可以让程序更加抽象
函数的理解与定义
函数的定义
函数是一段具有特定功能的、可重用的语句组,用函数名来
表示并通过函数名进行完成功能调用。
函数是一种功能的抽象,一般函数表达特定功能
两个作用:降低编程难度 和 代码复用
函数的理解与定义
函数的定义
Python定义一个函数使用def保留字,语法形式如下:
def 函数名(参数列表):
函数体
return 返回值列表
函数的理解与定义
函数的定义
def fibs(nums):
fibs = [0, 1]
for i in range(num - 2):
fibs.append(fibs[-2]+fibs[-1])
return fibs
函数名
参数
返回值
函数的理解与定义
函数的定义
给函数编写文档
函数的理解与定义
函数的调用
程序调用一个函数需要执行以下四个步骤:
(1)调用程序在调用处暂停执行;
(2)在调用时将实参复制给函数的形参;
(3)执行函数体语句;
(4)函数调用结束给出返回值,程序回到调用前的暂停处继续执行。
函数的理解与定义
函数的调用
nums = 8
Python程序设计
6.1 函数的理解与定义
6.2 参数传递与返回值
6.3 作用域
6.4 递归
Python程序设计
参数传递
返回值
参数传递与返回值
参数传递与返回值
参数传递
形参与实参
在def语句中,位于函数名后面的变量通常称为形参。
调用函数时提供的值称为实参
参数传递与返回值
参数传递
函数可以有参数,也可以没有,但必须保留括号
参数传递与返回值
参数传递
函数定义时可以为某些参数指定默认值,构成可选参数
参数传递与返回值
参数传递
位置参数 和 关键字参数
在结合使用位置参数和关键字参数时,必须先指定所有位置参数
参数传递与返回值
参数传递
函数定义时可以设计可变数量参数,既不确定参数总数量
参数传递与返回值
参数传递
函数定义时可以设计可变数量参数,既不确定参数总数量
def printParams(*params):
print(params)
def printParams2(**params):
print(params)
参数传递与返回值
返回值
函数可以返回0个或多个结果
return保留字用来传递返回值
函数可以有返回值,也可以没有
可以有return,也可以没有
return可以传递0个返回值,也可以传递任意多个返回值
参数传递与返回值
返回值
Python程序设计
6.1 函数的理解与定义
6.2 参数传递与返回值
6.3 作用域
6.4 递归
作用域
局部变量和全局变量
一个程序中的变量包括两类:全局变量和局部变量。
•全局变量指在函数之外定义的变量,一般没有缩进,在程序执行全过程有效。
•局部变量指在函数内部使用的变量,仅在函数内部有效,当函数退出时变量将不存在。
作用域
局部变量和全局变量
当函数执行完退出后,其内部变量将被释放。
规则1: 局部变量和全局变量是不同变量
作用域
局部变量和全局变量
函数func()内部使用了变量n,并且将变量参数b赋值给变量n
作用域
局部变量和全局变量
如果希望让func()函数将n当作全局变量,需要在变量n使用前显式声明该变量为全局变量,代码如下。
作用域
局部变量和全局变量
规则2: 局部变量为组合数据类型且未创建新变量,等同于全局变量
作用域
局部变量和全局变量
规则2: 局部变量为组合数据类型且未创建新变量,等同于全局变量
作用域
局部变量和全局变量
总结:
基本数据类型,无论是否重名,局部变量与全局变量不同
可以通过global保留字在函数内部声明全局变量
组合数据类型,如果局部变量未真实创建,则是全局变量
lambda
lambda函数
python 使用 lambda 来创建匿名函数,不再使用 def 语句这样标准的形式定义一个函数。
lambda 只是一个表达式,函数体比 def 简单很多。
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
lambda
lambda函数
原创力文档

文档评论(0)