Python函数全解析

Python 函数详解

函数是 Python 编程的核心,用于封装可重用的代码块。以下是函数的全面解析:


1. 函数定义

使用 def 关键字定义函数:

python 复制代码
def greet(name):  # name 是参数
    """打印问候语(文档字符串)"""
    print(f"Hello, {name}!")

2. 函数调用

通过函数名和参数调用:

python 复制代码
greet("Alice")  # 输出: Hello, Alice!

3. 参数类型
类型 说明 示例
位置参数 按顺序传递 func(a, b)
关键字参数 指定参数名传递 func(b=2, a=1)
默认参数 定义时指定默认值 def func(a=0):
可变参数 接收任意数量参数 def func(*args):
关键字可变参数 接收任意键值对 def func(**kwargs):

4. 返回值

return 返回结果(默认返回 None):

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

result = add(3, 5)  # result = 8

5. 作用域
  • 局部变量:函数内定义的变量(仅在函数内有效)
  • 全局变量 :函数外定义的变量(需用 global 在函数内修改)
python 复制代码
x = 10  # 全局变量

def modify():
    global x
    x = 20  # 修改全局变量
    y = 5   # 局部变量

modify()
print(x)  # 输出: 20
print(y)  # 报错: y 未定义

6. Lambda 函数

匿名函数,用于简单操作:

python 复制代码
square = lambda x: x ** 2
print(square(4))  # 输出: 16

7. 递归函数

函数调用自身:

python 复制代码
def factorial(n):
    return 1 if n == 0 else n * factorial(n-1)

print(factorial(5))  # 输出: 120

8. 函数注解

添加类型提示(Python 3.5+):

python 复制代码
def multiply(a: int, b: int) -> int:
    return a * b

9. 闭包

内部函数记住外部作用域的变量:

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

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

10. 装饰器

修改函数行为(不改变原函数代码):

python 复制代码
def logger(func):
    def wrapper(*args):
        print(f"调用函数: {func.__name__}")
        return func(*args)
    return wrapper

@logger
def say_hello(name):
    print(f"Hello, {name}!")

say_hello("Bob")
# 输出: 
# 调用函数: say_hello
# Hello, Bob!

11. 生成器函数

yield 返回迭代器:

python 复制代码
def count_down(n):
    while n > 0:
        yield n
        n -= 1

for num in count_down(3):
    print(num)  # 输出: 3, 2, 1

关键特性总结
特性 说明
可重用性 避免重复代码
模块化 将复杂任务分解为小函数
参数灵活 支持多种参数传递方式
作用域隔离 局部变量不影响全局环境
一等公民 函数可作为参数传递、赋值给变量或作为返回值

掌握这些概念,能显著提升代码的清晰度和维护性!

相关推荐
小白学大数据12 小时前
Python爬虫数据可视化:深度分析贝壳成交价格趋势与分布
爬虫·python·信息可视化
小小测试开发12 小时前
Python Arrow库:告别datetime繁琐,优雅处理时间与时区
开发语言·前端·python
鸽鸽程序猿12 小时前
【项目】【抽奖系统】注册功能实现
java·开发语言
我的xiaodoujiao12 小时前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 18--测试框架Pytest基础 2--插件和参数化
python·学习·测试工具·pytest
程序员的奶茶馆13 小时前
Python 数据结构面试真题:如何实现 LRU 缓存机制
python·面试
星期天要睡觉13 小时前
深度学习——基于 ResNet18 的图像分类训练
pytorch·python·机器学习
林炳然13 小时前
Python-Basic Day-1 基本元素(数字、字符串)
python
weixin_3077791313 小时前
在Linux服务器上使用Jenkins和Poetry实现Python项目自动化
linux·开发语言·python·自动化·jenkins
润 下13 小时前
C语言——深入解析C语言指针:从基础到实践从入门到精通(四)
c语言·开发语言·人工智能·经验分享·笔记·程序人生·其他
今天没有盐13 小时前
内置基础类型之布尔值类型(bool)与时间与日期类型
python·编程语言