目录
引言
Python 中的函数是一段组织好的、可重复使用的、用来实现单一或相关联功能的代码块。函数能提高应用的模块性,和代码的重复利用率。Python 提供了许多内置函数,比如 print()
,但也可以创建自己的函数,这被称为用户自定义函数。
函数的目的
减少重复代码的编写,提升代码的复用。
目的: 封装一定的功能,比如系统print就封装了打印函数
定义函数
使用 def
关键字来定义一个函数,后面跟着函数名和圆括号 ()
,括号中可以包含一些变量名(即参数),用于接收传入的数据。然后,你可以通过冒号 :
开始一个缩进的代码块,该代码块包含函数体。
def my_function():
print("Hello, this is a function.")
调用函数
定义函数后,可以通过函数名加上圆括号来调用它。如果函数有参数,你可以在圆括号中传入相应的值。
my_function() # 调用函数,输出: Hello, this is a function.
参数
函数可以定义参数,这些参数在函数被调用时接收值。
def greet(name):
print("Hello, " + name + "!")
greet("Alice") # 输出: Hello, Alice!
返回值
函数可以通过 return
语句返回一个值。return
语句可以结束函数的执行,并将控制权返回给函数被调用的地方。
def sum_two_numbers(a, b):
return a + b
result = sum_two_numbers(5, 3)
print(result) # 输出: 8
默认参数
可以为参数设置默认值,这样在调用函数时,如果没有为这些参数提供值,就会使用默认值。
def greet(name, greeting="Hello"):
print(greeting + ", " + name + "!")
greet("Bob") # 输出: Hello, Bob!
greet("Eve", "Hi") # 输出: Hi, Eve!
关键字参数
在调用函数时,可以使用关键字参数的形式来明确指定哪个参数接收哪个值。这可以提高代码的可读性,并且允许函数调用时参数的顺序与函数定义中的顺序不同。
def greet(greeting, name):
print(f"{greeting}, {name}!")
# 使用关键字参数
greet(name="Charlie", greeting="Hey")
可变参数
使用 *args
和 **kwargs
来允许函数接收任意数量的参数。*args
用于接收任意数量的位置参数(非键值对),而 **kwargs
用于接收任意数量的关键字参数(键值对)。
def my_function(*args):
for arg in args:
print(arg)
my_function(1, 2, 3) # 输出: 1 2 3
def another_function(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
another_function(first="Alice", second="Bob") # 输出: first: Alice second: Bob
匿名函数
匿名函数是一种没有具体名称的函数,在Python中通常被称为lambda函数。
定义:匿名函数是一种简洁的定义函数的方式,它允许你快速定义一个小的、一次性的函数对象,而不需要显式地为其命名。
语法:在Python中,匿名函数使用lambda关键字来定义,其基本语法为lambda arguments: expression。其中,arguments是函数的参数(可以是一个或多个,用逗号分隔),expression是函数的返回值(即函数体,只能是一个表达式,不能包含多个语句或复杂控制流)。
# 使用匿名函数过滤偶数
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = filter(lambda x: x % 2 == 0, numbers)
print(list(even_numbers)) # 输出: [2, 4, 6, 8, 10]
# 使用匿名函数将列表中的数字转换为它们的平方
numbers = [1, 2, 3, 4, 5]
squared_numbers = map(lambda x: x ** 2, numbers)
print(list(squared_numbers)) # 输出: [1, 4, 9, 16, 25]
# 使用匿名函数对列表中的字符串按长度排序
words = ['apple', 'banana', 'orange', 'strawberry']
sorted_words = sorted(words, key=lambda x: len(x))
print(sorted_words) # 输出: ['apple', 'banana', 'orange', 'strawberry']