购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.5 函数

在Python中,函数是一段可重复使用的代码块,用于执行特定的任务或操作。函数可以接受参数(即函数的输入),并且可以返回一个结果(即函数的输出)。

1.5.1 定义函数

函数使得代码模块化,可维护性更强,并且可以避免重复编写相同的代码。函数的基本语法如下:

说明 关键字def用于定义函数,后面跟着函数名和参数列表。函数名function_name是函数的标识符,用于调用函数。参数列表parameters是函数的输入,可以有零个或多个参数,多个参数之间用逗号分隔。

函数体是函数要执行的代码块,可以包含零个或多个语句。return语句用于返回函数的结果,可以返回一个值或多个值(以元组的形式返回)。

【例1-15】 函数应用示例。依次输入以下代码,并观察输出结果。

(1)定义一个简单的函数:

(2)定义带参数的函数:

(3)定义带返回值的函数:

(4)函数参数的默认值:

(5)使用*args和**kwargs处理可变数量的参数:

1.5.2 调用函数

函数调用是指在程序中使用函数来执行特定任务的过程。在Python中,函数调用通常通过函数名称后跟括号来完成,括号中可以包含参数列表(如果函数需要参数的话)。函数调用的基本语法如下:

    function_name(argument1,argument2,…)

其中,function_name是函数的名称,用于标识要调用的函数;argument1,argument2,…是传递给函数的参数,参数可以是变量、常量或表达式等。

1)位置参数

在函数调用中,参数的传递顺序与函数定义时的参数顺序一致。这种传递方式称为位置参数。

下面的示例中,函数greet期望一个参数name,在函数调用时传递了一个字符串“Alice”作为name的值,这就是位置参数。

2)关键字参数

通过指定参数名称来传递参数,而不必依赖于它们在函数参数列表中的位置。这种方式称为关键字参数。

下面的示例中,name和message都是关键字参数。在函数调用时指定了参数的名称,这样参数的顺序就不再重要。

3)混合使用位置参数和关键字参数

可以混合使用位置参数和关键字参数,但是位置参数必须在关键字参数之前。

下面的示例中,name是位置参数,message是关键字参数。位置参数Alice必须在关键字参数message="How are you?"之前。

4)默认参数

可以在函数定义时为参数指定默认值,这样在函数调用时如果没有提供对应参数的值,则使用默认值。

下面的示例中,message参数具有默认值“How are you?”。如果在函数调用时不提供message参数的值,则使用默认值。

5)不定数量的参数

可以定义接受任意数量参数的函数。在函数定义中,可以使用*args来表示接受任意数量的位置参数,使用**kwargs来表示接受任意数量的关键字参数。

下面的示例中,*args将接受位置参数1、2、3,**kwargs将接受关键字参数a=4和b=5。

函数调用是程序中组织逻辑的重要方式,它允许将代码分解成可重用的块,并使代码更加模块化和易于维护。

1.5.3 匿名函数(Lambda函数)

在Python中,匿名函数也称为Lambda函数,是一种特殊的函数,它可以在一行代码中定义,并且通常用于一些简单的函数操作。

与普通函数不同,匿名函数没有函数名称、文档字符串和正式的函数定义,它使用lambda关键字来创建。匿名函数的基本语法为:

    lambda arguments:expression

其中,arguments是参数列表,可以包含零个或多个参数;expression是一个表达式,用于计算并返回函数的结果。匿名函数可以接受任意数量的参数,但是只能包含一个表达式。

【例1-16】 匿名函数示例,演示一个接受两个参数并返回它们的和的匿名函数。

匿名函数通常与内置函数map()、filter()、sorted()等结合使用,以提供更简洁的代码。例如,可以在map()函数中使用匿名函数来对一个列表中的每个元素执行特定操作。

下面的示例中,map()函数使用一个匿名函数来计算列表中每个元素的平方,并将结果存储在squared_numbers中。最后,使用list()函数将map对象转换为列表并打印出来。

    numbers=[1,2,3,4,5]
    squared_numbers=map(lambda x:x ** 2,numbers)
    print(list(squared_numbers))

说明 匿名函数在某些情况下可以提供简洁的解决方案,但由于其缺乏函数名和文档字符串,可能会降低代码的可读性。因此,在编写复杂的逻辑或需要多行代码的函数时,尽量使用常规的命名函数。 TUsqcEbjKTYDK+OsZCe2afDUHpRAlOI6M8W6Q1syPa1528elE+zVhJaHvXIJ3k2L

点击中间区域
呼出菜单
上一章
目录
下一章
×