Python3 函数详解:从基础到高级

引言

函数是 Python 编程中最重要的概念之一。它不仅可以提高代码的复用性,还能让程序结构更清晰、更易于维护。本文将详细介绍 Python3 中函数的使用方法,包括函数定义、参数传递、作用域、装饰器等内容,帮助你全面掌握 Python 函数的核心知识。


目录

  1. 函数基础
    • 1.1 函数的定义与调用
    • 1.2 返回值
  2. 函数参数
    • 2.1 位置参数
    • 2.2 默认参数
    • 2.3 可变参数
    • 2.4 关键字参数
  3. 函数作用域
    • 3.1 局部变量与全局变量
    • 3.2 globalnonlocal 关键字
  4. 高级函数特性
    • 4.1 匿名函数(Lambda)
    • 4.2 高阶函数
    • 4.3 闭包
  5. 装饰器
    • 5.1 装饰器的基本概念
    • 5.2 自定义装饰器
    • 5.3 带参数的装饰器
  6. 总结

1. 函数基础

1.1 函数的定义与调用

在 Python 中,使用 def 关键字定义函数。函数定义后,可以通过函数名加括号的方式调用。

python 复制代码
# 定义一个简单的函数
def greet(name):
    print(f"Hello, {name}!")

# 调用函数
greet("Alice")  # 输出:Hello, Alice!

1.2 返回值

函数可以通过 return 语句返回一个值。如果没有 return 语句,函数默认返回 None

python 复制代码
def add(a, b):
    return a + b

result = add(3, 5)
print(result)  # 输出:8

2. 函数参数

Python 函数支持多种参数传递方式,包括位置参数、默认参数、可变参数和关键字参数。

2.1 位置参数

位置参数是按照定义时的顺序传递的参数。

python 复制代码
def power(base, exponent):
    return base ** exponent

print(power(2, 3))  # 输出:8

2.2 默认参数

默认参数是在定义函数时为参数指定默认值。调用函数时,如果没有传递该参数,则使用默认值。

python 复制代码
def greet(name, message="Hello"):
    print(f"{message}, {name}!")

greet("Alice")  # 输出:Hello, Alice!
greet("Bob", "Hi")  # 输出:Hi, Bob!

2.3 可变参数

可变参数允许函数接受任意数量的位置参数,使用 *args 表示。

python 复制代码
def sum_all(*args):
    return sum(args)

print(sum_all(1, 2, 3))  # 输出:6
print(sum_all(1, 2, 3, 4, 5))  # 输出:15

2.4 关键字参数

关键字参数允许函数接受任意数量的关键字参数,使用 **kwargs 表示。

python 复制代码
def print_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_info(name="Alice", age=25, city="New York")
# 输出:
# name: Alice
# age: 25
# city: New York

3. 函数作用域

3.1 局部变量与全局变量

  • 局部变量:在函数内部定义的变量,只能在函数内部访问。
  • 全局变量:在函数外部定义的变量,可以在整个程序中使用。
python 复制代码
x = 10  # 全局变量

def my_func():
    y = 5  # 局部变量
    print(x + y)

my_func()  # 输出:15
print(y)  # 报错:NameError,y 是局部变量

3.2 globalnonlocal 关键字

  • global:用于在函数内部修改全局变量。
  • nonlocal:用于在嵌套函数中修改外层函数的变量。
python 复制代码
# global 示例
x = 10

def modify_global():
    global x
    x = 20

modify_global()
print(x)  # 输出:20

# nonlocal 示例
def outer():
    x = 10
    def inner():
        nonlocal x
        x = 20
    inner()
    print(x)  # 输出:20

outer()

4. 高级函数特性

4.1 匿名函数(Lambda)

Lambda 是一种匿名函数,适合定义简单的单行函数。

python 复制代码
# 普通函数
def add(a, b):
    return a + b

# Lambda 表达式
add_lambda = lambda a, b: a + b

print(add(3, 5))        # 输出:8
print(add_lambda(3, 5)) # 输出:8

4.2 高阶函数

高阶函数是指接受函数作为参数或返回函数的函数。

python 复制代码
# 高阶函数示例
def apply_func(func, x, y):
    return func(x, y)

result = apply_func(lambda a, b: a * b, 3, 5)
print(result)  # 输出:15

4.3 闭包

闭包是指在一个函数内部定义另一个函数,并且内部函数引用了外部函数的变量。

python 复制代码
def outer(x):
    def inner(y):
        return x + y
    return inner

closure = outer(10)
print(closure(5))  # 输出:15

5. 装饰器

5.1 装饰器的基本概念

装饰器是一种用于修改函数或类行为的工具。它本质上是一个高阶函数,接受一个函数作为参数并返回一个新的函数。

python 复制代码
# 定义一个装饰器
def my_decorator(func):
    def wrapper(*args, **kwargs):
        print("函数执行前")
        result = func(*args, **kwargs)
        print("函数执行后")
        return result
    return wrapper

# 使用装饰器
@my_decorator
def say_hello(name):
    print(f"Hello, {name}!")

say_hello("Alice")
# 输出:
# 函数执行前
# Hello, Alice!
# 函数执行后

5.2 自定义装饰器

装饰器可以用于日志记录、权限校验、性能测试等场景。

python 复制代码
# 记录函数执行时间的装饰器
import time

def timer(func):
    def wrapper(*args, **kwargs):
        start_time = time.time()
        result = func(*args, **kwargs)
        end_time = time.time()
        print(f"{func.__name__} 执行时间:{end_time - start_time:.2f}秒")
        return result
    return wrapper

@timer
def slow_function():
    time.sleep(2)

slow_function()  # 输出:slow_function 执行时间:2.00秒

5.3 带参数的装饰器

装饰器本身也可以接受参数。

python 复制代码
# 带参数的装饰器
def repeat(num_times):
    def decorator(func):
        def wrapper(*args, **kwargs):
            for _ in range(num_times):
                result = func(*args, **kwargs)
            return result
        return wrapper
    return decorator

@repeat(3)
def greet(name):
    print(f"Hello, {name}!")

greet("Alice")
# 输出:
# Hello, Alice!
# Hello, Alice!
# Hello, Alice!

6. 总结

本文详细介绍了 Python3 中函数的使用方法,包括函数定义、参数传递、作用域、高级特性以及装饰器。以下是本文的要点回顾:

  1. 函数基础 :使用 def 定义函数,通过 return 返回值。
  2. 函数参数:支持位置参数、默认参数、可变参数和关键字参数。
  3. 函数作用域 :局部变量与全局变量,globalnonlocal 关键字。
  4. 高级特性:Lambda 表达式、高阶函数、闭包。
  5. 装饰器:用于增强函数功能,支持自定义和带参数的装饰器。

掌握这些知识后,你将能够编写更高效、更灵活的 Python 代码。希望本文对你的学习和工作有所帮助!


参考资料:


相关推荐
小小小小宇2 小时前
虚拟列表兼容老DOM操作
前端
悦悦子a啊2 小时前
Python之--基本知识
开发语言·前端·python
安全系统学习3 小时前
系统安全之大模型案例分析
前端·安全·web安全·网络安全·xss
涛哥码咖3 小时前
chrome安装AXURE插件后无效
前端·chrome·axure
OEC小胖胖4 小时前
告别 undefined is not a function:TypeScript 前端开发优势与实践指南
前端·javascript·typescript·web
行云&流水4 小时前
Vue3 Lifecycle Hooks
前端·javascript·vue.js
Sally璐璐4 小时前
零基础学HTML和CSS:网页设计入门
前端·css
老虎06274 小时前
JavaWeb(苍穹外卖)--学习笔记04(前端:HTML,CSS,JavaScript)
前端·javascript·css·笔记·学习·html
灿灿121384 小时前
CSS 文字浮雕效果:巧用 text-shadow 实现 3D 立体文字
前端·css
烛阴5 小时前
Babel 完全上手指南:从零开始解锁现代 JavaScript 开发的超能力!
前端·javascript