在这里插入图片描述

Python 函数指南:从会用到用好

在日常 Python 开发中,函数(Function)几乎是所有代码结构的基础
不管是脚本工具、Web 服务,还是数据分析代码,函数都是让代码保持清晰、可复用、易维护的关键。

很多初学者会写函数,但往往写得不够“Pythonic”。这篇文章不讲枯燥语法,而是结合实际开发经验,聊一聊 Python 函数那些值得掌握的技巧。


一、什么是函数?

简单来说:

函数就是一段可以被重复调用的代码块。

在 Python 中,我们通过 def 来定义函数。

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

调用函数:

greet("Alice")

输出:

Hello, Alice!

📌 这样做的好处是:

  • 避免重复代码
  • 提高代码可读性
  • 方便维护和扩展

二、函数的基本结构

一个标准的 Python 函数通常包括以下部分:

组成部分说明
def定义函数关键字
函数名函数的名称
参数输入数据
函数体实际执行逻辑
return返回结果

示例:

def add(a, b):
    result = a + b
    return result

调用:

print(add(3, 5))

输出:

8

💡 经验建议:

函数最好只做一件事,这样代码更清晰。


三、参数的几种常见写法

Python 的函数参数非常灵活,这是很多人喜欢 Python 的原因之一。

1. 普通参数

def multiply(a, b):
    return a * b

调用:

multiply(3, 4)

2. 默认参数

默认参数可以让函数更灵活。

def greet(name, message="Hello"):
    print(f"{message}, {name}")

调用:

greet("Tom")
greet("Tom", "Hi")

输出:

Hello, Tom
Hi, Tom

⚠️ 注意:默认参数必须放在普通参数后面。


3. 可变参数 *args

当你不确定参数数量时,可以使用 *args

def total(*numbers):
    return sum(numbers)

调用:

total(1, 2, 3, 4)

输出:

10

args 实际上是一个 tuple


4. 关键字参数 **kwargs

用于接收不固定数量的键值参数。

def print_info(**info):
    for key, value in info.items():
        print(key, value)

调用:

print_info(name="Alice", age=25)

输出:

name Alice
age 25

📌 在实际开发中,**kwargs 经常用于:

  • 配置参数
  • 框架扩展
  • API 参数

四、返回值的技巧

函数不仅可以返回一个值,还可以返回多个值。

def get_user():
    name = "Alice"
    age = 25
    return name, age

调用:

name, age = get_user()

本质上返回的是 tuple


五、函数注解(Type Hint)

在实际项目中,建议加上 类型提示(Type Hint),可读性会大大提高。

def add(a: int, b: int) -> int:
    return a + b

含义:

部分说明
a: int参数类型
b: int参数类型
-> int返回值类型

📌 好处:

  • IDE 自动提示
  • 提高代码可读性
  • 配合 mypy 做静态检查

六、函数文档字符串(Docstring)

好的函数一定要有说明。

def add(a, b):
    """
    返回两个数字的和
    
    参数:
        a (int): 第一个数字
        b (int): 第二个数字
    
    返回:
        int: 两数之和
    """
    return a + b

在 Python 交互环境:

help(add)

就可以查看文档。

📌 这是很多开源项目的标准写法。


七、Lambda(匿名函数)

当函数非常简单时,可以使用 lambda

add = lambda a, b: a + b

等价于:

def add(a, b):
    return a + b

常见用法:

numbers = [1, 2, 3, 4]

result = list(map(lambda x: x * 2, numbers))

输出:

[2, 4, 6, 8]

⚠️ 但在实际开发中:

lambda 适合简单表达式,不适合复杂逻辑。


八、函数设计的几个经验

在真实项目中,我通常遵循几个原则:

1️⃣ 函数要短

推荐:

10 ~ 30 行

太长说明需要拆分。


2️⃣ 函数只做一件事

坏例子:

函数既处理数据,又写数据库,又打印日志

好例子:

函数 A:处理数据
函数 B:保存数据库
函数 C:记录日志

3️⃣ 命名要清晰

推荐命名方式:

类型示例
动词 + 名词get_user
动词 + 结果calculate_total
动词save

避免:

func1()
doStuff()
test()

九、一个简单但真实的例子

假设我们要计算订单价格:

def calculate_order_price(price: float, quantity: int, discount: float = 0.0) -> float:
    """
    计算订单总价
    """
    total = price * quantity
    total -= total * discount
    return total

调用:

total = calculate_order_price(100, 3, 0.1)
print(total)

输出:

270

代码逻辑非常清晰。


十、总结

函数是 Python 编程中最重要的基础之一。
写函数不难,但写好函数需要经验

最后给大家一个简短总结:

技巧建议
函数长度保持简短
函数职责单一职责
参数设计使用默认参数
类型提示推荐使用
文档字符串必写

📌 写代码的本质,其实是写给未来的自己和团队看的。

好的函数设计,会让代码在半年后依然清晰易懂。


如果你刚开始学习 Python,建议多看看一些优秀开源项目的代码,比如:

  • FastAPI
  • Requests
  • Django

你会发现:

优秀的 Python 代码,函数设计都非常优雅。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐