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

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

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

相关推荐
西阳未落3 小时前
C++基础(21)——内存管理
开发语言·c++·面试
编程武士3 小时前
从50ms到30ms:YOLOv10部署中图像预处理的性能优化实践
人工智能·python·yolo·性能优化
我的xiaodoujiao3 小时前
Windows系统Web UI自动化测试学习系列2--环境搭建--Python-PyCharm-Selenium
开发语言·python·测试工具
callJJ3 小时前
从 0 开始理解 Spring 的核心思想 —— IoC 和 DI(2)
java·开发语言·后端·spring·ioc·di
hsjkdhs5 小时前
万字详解C++之构造函数析构函数
开发语言·c++
Lin_Aries_04215 小时前
容器化简单的 Java 应用程序
java·linux·运维·开发语言·docker·容器·rpc
傻啦嘿哟5 小时前
Python SQLite模块:轻量级数据库的实战指南
数据库·python·sqlite
Q_Q5110082856 小时前
python+django/flask+uniapp基于微信小程序的瑜伽体验课预约系统
spring boot·python·django·flask·uni-app·node.js·php
XueminXu6 小时前
Python读取MongoDB的JSON字典和列表对象转为字符串
python·mongodb·json·pymongo·mongoclient·isinstance·json.dumps
techdashen6 小时前
12分钟讲解Python核心理念
开发语言·python