Python 函数是组织代码块的一种方式,使得代码更加模块化、可重用和易于理解。下面,我将用约1500字来详细介绍Python函数,包括其基本语法、使用场景、参数传递、返回值、嵌套函数、匿名函数(lambda函数)、装饰器、闭包等概念,并附上相应的代码示例。
1. Python 函数的基本语法
Python中定义函数使用def关键字,后面跟着函数名和括号内的参数列表,然后是冒号和函数体。
python
|
def greet(name): |
|
"""这个函数用于向用户问好""" |
|
print(f"Hello, {name}!") |
|
|
|
# 调用函数 |
|
greet("World") # 输出:Hello, World! |
2. 参数传递
2.1 位置参数
按照函数定义时参数的顺序进行传递。
python
|
def add(a, b): |
|
return a + b |
|
|
|
result = add(3, 4) # 调用时按照定义顺序传递参数 |
|
print(result) # 输出:7 |
2.2 关键字参数
通过参数名来指定参数值,参数顺序可以随意。
python
|
result = add(b=4, a=3) # 调用时通过参数名传递参数 |
|
print(result) # 输出:7 |
2.3 默认参数
在定义函数时,可以给参数指定一个默认值。当调用函数时没有提供该参数的值时,将使用默认值。
python
|
def greet(name, greeting="Hello"): |
|
print(f"{greeting}, {name}!") |
|
|
|
greet("World") # 输出:Hello, World! |
|
greet("Python", "Welcome to") # 输出:Welcome to, Python! |
2.4 可变参数
使用*args和**kwargs可以接收任意数量的位置参数和关键字参数。
python
|
def func(*args, **kwargs): |
|
print("位置参数:", args) |
|
print("关键字参数:", kwargs) |
|
|
|
func(1, 2, 3, name="Alice", age=25) |
|
# 输出: |
|
# 位置参数: (1, 2, 3) |
|
# 关键字参数: {'name': 'Alice', 'age': 25} |
3. 返回值
函数执行完毕后,可以使用return语句返回一个值或多个值(作为元组返回)。如果函数没有return语句,则返回None。
python
|
def get_sum(a, b): |
|
return a + b |
|
|
|
result = get_sum(3, 4) |
|
print(result) # 输出:7 |
4. 嵌套函数
一个函数内部可以定义另一个函数,这种函数称为嵌套函数。
python
|
def outer_func(): |
|
def inner_func(): |
|
print("I am an inner function.") |
|
inner_func() # 在外部函数中调用内部函数 |
|
|
|
outer_func() # 输出:I am an inner function. |
5. 匿名函数(lambda函数)
lambda函数是一种简单的、匿名的、一行的函数。它主要用于需要一个函数作为参数的函数式编程场景。
python
|
# 定义一个lambda函数,用于计算两个数的和 |
|
add = lambda a, b: a + b |
|
|
|
result = add(3, 4) |
|
print(result) # 输出:7 |
6. 装饰器
装饰器是一种高级Python语法,用于在不修改函数源代码的情况下,为函数添加额外的功能。装饰器通常用于日志记录、权限验证、性能分析等场景。
python
|
def my_decorator(func): |
|
def wrapper(*args, **kwargs): |
|
print("Before function call.") |
|
result = func(*args, **kwargs) |
|
print("After function call.") |
|
return result |
|
return wrapper |
|
|
|
@my_decorator |
|
def say_hello(name): |
|
print(f"Hello, {name}!") |
|
|
|
say_hello("World") |
|
# 输出: |
|
# Before function call. |
|
# Hello, World! |
|
# After function call. |
7. 闭包
闭包是一个可以记住并访问其词法作用域的函数,即使函数在其词法作用域之外执行。在Python中,嵌套函数和外层函数的非局部(non-local)变量一起,可以形成一个闭包。
python
|
def outer_func(x): |
|
def inner_func(y): |