8.Python函数

在程序中需要反复执行的某些代码,我们能否将它们封装起来?
能,可以使用函数来封装。函数具有函数名、参数和返回值。Python中的函数很灵活:可以在模块中但是类之外定义,作用域是当前模块,我们称之为函数;也可以在别的函数中定义,我们称之为嵌套函数;还可以在类中定义,我们称之为方法。

1 定义函数

什么是形式参数:

由于定义函教时的参数不是实际数据,会在调用函数时传递给它们实际数据,所以我们称定义函数时的参数为形式参数,简称形参;称调用函教时传递的实际教据为实际参数,简称实参。你可以将形参理解为在函数中定义的变量。

2 调用函数

在定义好函数后,就可以调用函数了,很简单!

2.1 使用位置参数调用函数

在调用函数时传递的实参与定义函数时的形参顺序一致,这是调用 函数的基本形式。

2.2 使用关键字参数调用函数

在调用函数时可以采用“关键字=实参”的形式,其中,关键字的名 称就是定义函数时形参的名称。

使用关键字参数调用函数时,调用考能够清晰地看出所传递参数的含义,提高函数调用的可读性。

3 参数的默认值

4 可变参数

4.1 基于元组的可变参数(*可变参数)

*可变参数在函数中被组装成一个元组。 示例代码如下:

4.2 基于字典的可变参数(**可变参数)

**可变参数在函数中被组装成一个字典。 示例代码如下:

5 函数中变量的作用域

变量可以在模块中创建,作用域(变量的有效范围)是整个模块, 被称为全局变量。变量也可以在函数中创建,在默认情况下作用域是整 个函数,被称为局部变量。

修改示例代码如下:

6 函数类型

Python中的任意一个函数都有数据类型,这种数据类型是function, 被称为函数类型。

6.1 理解函数类型

函数类型的数据与其他类型的数据是一样的,任意类型的数据都可 以作为函数返回值使用,还可以作为函数参数使用。因此,一个函数可 以作为另一个函数返回值使用,也可以作为另一个函数参数使用。

示例代码如下。

增加平方函数,示例代码如下:

add()和sub()函数有两个数字参数,具有相同的函数类型。sq uare()函数只有一个数字参数,所以square()与add()、sub()函 数的类型不同。

6.2 过滤函数filter()

在Python中定义了一些用于数据处理的函数,如filter()和map( )等。我们先介绍filter()函数。

filter()函数用于对容器中的元素进行过滤处理。

filter()函数的语法如下:

参数function是一个提供过滤条件的函数,返回布尔值。

参数iterable是容器类型的数据。

示例代码如下:

通过Python指令运行文件,输出结果。

6.3 映射函数map()

map()函数用于对容器中的元素进行映射(或变换)。例如:我 想将列表中的所有元素都乘以2,返回新的列表。

map()函数的语法如下:

参数function是一个提供变换规则的函数,返回变换之后的元素。 参数iterable是容器类型的数据。 示例代码如下:

通过Python指令运行文件,输出结果。

7 lambda()函数

我们之前学习的函数都是有名称的函数,例如在8.1节定义的rect_ar ea()函数,rect_area就是其函数名。我们也可以定义匿名函数,匿名 函数就是没有名称的函数。

在Python中使用lambda关键字定义匿名函数。lambda关键字定义的 函数也被称为lambda()函数,定义lambda()函数的语法如下。

“参数列表”与函数的参数列表是一样的,但不需要用小括号括起来

lambda()函数与有名称的函数一样,都是函数类型,所以8.6.1节 的add()和sub()函数可以被lambda()函数替代。修改8.6.1节的代 码示例如下:

8 动动手——使用更多的lambda()函数

使用lambda()函数替换f1()函数:

9 练一练

1 通过以下函数sum()定义代码,调用语句正确的是()。

def sum(*numbers):

total=0.0

for number in numbers:

total+=number

return total

A.print(sum(100.0,20.0,30.0))

B.print(sum(30.0,80.0))

C.print(sum(30.0,'80'))

D.print(sum(30.0,80.0,'80'))

2 通过以下函数area()定义代码,调用语句正确的是()。

def area(width,height):

return width*height

A.area(320.0,480.0)

B.area(width=320.0,height=480.0)

C.area(height=480.0,width=320.0)

D.area(320.0,'480')

3 填空题:请在以下代码横线处填写一些代码,使之获得期望的输 出结果。

x=200

def print_value():

____x

x=100

print("函数中x={0}".format(x))

print_value()

print("全局变量x={0}".format(x))

输出结果:

函数中x=100

全局变量x=100

4 判断对错:(请在括号内打√或×,√表示正确,×表示错误)。

1)Python支持函数重载。()

2)map()函数用于对容器中的元素进行变换。()

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值