Python函数的定义和使用(附带实例)
在 Python 中,函数是一段可重复使用的代码块,用于执行特定的任务或操作。函数可以接受参数(即函数的输入),并且可以返回一个结果(即函数的输出)。
定义函数的基本语法如下:
函数体是函数要执行的代码块,可以包含零个或多个语句。return 语句用于返回函数的结果,可以返回一个值或多个值(以元组的形式返回)。
【实例 1】定义一个简单的函数:
【实例 2】定义带参数的函数:
【实例 3】定义带返回值的函数:
在 Python 中,函数调用通常通过函数名称后跟括号来完成,括号中可以包含参数列表(如果函数需要参数的话)。函数调用的基本语法如下:
下面的示例中,函数 greet() 期望一个参数 name,在函数调用时传递了一个字符串“Alice”作为 name 的值,这就是位置参数。
下面的示例中,name 和 message 都是关键字参数。在函数调用时指定了参数的名称,这样参数的顺序就不再重要。
下面的示例中,name 是位置参数,message 是关键字参数。位置参数 Alice 必须在关键字参数 message="How are you?" 之前。
下面的示例中,message 参数具有默认值“How are you?”。如果在函数调用时不提供 message 参数的值,则使用默认值。
下面的示例中,*args 将接受位置参数 1、2、3,**kwargs 将接受关键字参数 a=4 和 b=5:
与普通函数不同,匿名函数没有函数名称、文档字符串和正式的函数定义,它使用 lambda 关键字来创建。匿名函数的基本语法为:
匿名函数可以接受任意数量的参数,但是只能包含一个表达式。
例如,演示一个接受两个参数并返回它们的和的匿名函数。
匿名函数通常与内置函数 map()、filter()、sorted() 等结合使用,以提供更简洁的代码。例如,可以在 map() 函数中使用匿名函数来对一个列表中的每个元素执行特定操作。
下面的示例中,map() 函数使用一个匿名函数来计算列表中每个元素的平方,并将结果存储在 squared_numbers 中。最后,使用 list() 函数将 map 对象转换为列表并打印出来。
Python函数的定义
函数使得代码模块化,可维护性更强,并且可以避免重复编写相同的代码。定义函数的基本语法如下:
def function_name(parameters): """ 文档字符串(可选):描述函数的功能、参数、返回值等信息 """ # 函数体,即函数要执行的代码块 # 可以包含零个或多个语句 return expression # 可选,可以包含多个 return,用于返回函数的结果
- 关键字 def 用于定义函数,后面跟着函数名和参数列表;
- 函数名 function_name 是函数的标识符,用于调用函数;
- 参数列表 parameters 是函数的输入,可以有零个或多个参数,多个参数之间用逗号分隔。
函数体是函数要执行的代码块,可以包含零个或多个语句。return 语句用于返回函数的结果,可以返回一个值或多个值(以元组的形式返回)。
【实例 1】定义一个简单的函数:
def greet(): print("Hello, world!")
【实例 2】定义带参数的函数:
def greet(name): print("Hello, " + name + "!")
【实例 3】定义带返回值的函数:
def add(a, b): return a + b
Python函数的调用
函数调用是指在程序中使用函数来执行特定任务的过程。在 Python 中,函数调用通常通过函数名称后跟括号来完成,括号中可以包含参数列表(如果函数需要参数的话)。函数调用的基本语法如下:
function_name(argument1,argument2,…)
- function_name 是函数的名称,用于标识要调用的函数;
- argument1,argument2,… 是传递给函数的参数,参数可以是变量、常量或表达式等。
1) 位置参数
在函数调用中,参数的传递顺序与函数定义时的参数顺序一致。这种传递方式称为位置参数。下面的示例中,函数 greet() 期望一个参数 name,在函数调用时传递了一个字符串“Alice”作为 name 的值,这就是位置参数。
def greet(name): print("Hello, " + name + "!") greet("C语言中文网")运行结果为:
Hello, C语言中文网!
2) 关键字参数
通过指定参数名称来传递参数,而不必依赖于它们在函数参数列表中的位置。这种方式称为关键字参数。下面的示例中,name 和 message 都是关键字参数。在函数调用时指定了参数的名称,这样参数的顺序就不再重要。
def greet(name, message): print("Hello,", name) print(message) greet(message="How are you?", name="Alice")运行结果为:
Hello, Alice
How are you?
3) 混合使用位置参数和关键字参数
可以混合使用位置参数和关键字参数,但是位置参数必须在关键字参数之前。下面的示例中,name 是位置参数,message 是关键字参数。位置参数 Alice 必须在关键字参数 message="How are you?" 之前。
def greet(name, message): print("Hello,", name) print(message) greet("Alice",message="How are you?")运行结果为:
Hello, Alice
How are you?
4) 默认参数
可以在函数定义时为参数指定默认值,这样在函数调用时如果没有提供对应参数的值,则使用默认值。下面的示例中,message 参数具有默认值“How are you?”。如果在函数调用时不提供 message 参数的值,则使用默认值。
def greet(name, message="How are you?"): print("Hello,", name) print(message) greet("Alice")运行结果为:
Hello, Alice
How are you?
5) 不定数量的参数
可以定义接受任意数量参数的函数。在 Python 函数定义中:- 可以使用 *args 来表示接受任意数量的位置参数;
- 使用 **kwargs 来表示接受任意数量的关键字参数。
下面的示例中,*args 将接受位置参数 1、2、3,**kwargs 将接受关键字参数 a=4 和 b=5:
def my_function(*args, **kwargs): print("Positional arguments:", args) print("Keyword arguments:", kwargs) my_function(1, 2, 3, a=4, b=5)运行结果为:
Positional arguments: (1, 2, 3)
Keyword arguments: {'a': 4, 'b': 5}
Python匿名函数(Lambda函数)
在 Python 中,匿名函数也称为 Lambda 函数,是一种特殊的函数,它可以在一行代码中定义,并且通常用于一些简单的函数操作。与普通函数不同,匿名函数没有函数名称、文档字符串和正式的函数定义,它使用 lambda 关键字来创建。匿名函数的基本语法为:
lambda arguments:expression
- arguments 是参数列表,可以包含零个或多个参数;
- expression 是一个表达式,用于计算并返回函数的结果。
匿名函数可以接受任意数量的参数,但是只能包含一个表达式。
例如,演示一个接受两个参数并返回它们的和的匿名函数。
add_numbers = lambda x, y: x + y # 定义匿名函数,接受参数 x 和 y,并返回它们的和 # 调用匿名函数 result = add_numbers(3, 5) # 将匿名函数赋值给变量 add_numbers,并调用该函数 print("The sum is:", result)运行结果为:
The sum is: 8
匿名函数通常与内置函数 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))运行结果为:
[1, 4, 9, 16, 25]
匿名函数在某些情况下可以提供简洁的解决方案,但由于其缺乏函数名和文档字符串,可能会降低代码的可读性。因此,在编写复杂的逻辑或需要多行代码的函数时,尽量使用常规的命名函数。