【Python篇】Python 函数综合指南——从基础到高阶

概述

在Python编程语言中,函数是执行特定任务的代码块,它们使得程序更加模块化、可重用和易于维护。Python中的函数可以完成从简单的任务到复杂的操作,并且支持多种高级特性,如默认参数、关键字参数、可变参数、函数注解、lambda表达式、高阶函数等。本文将从基础到高阶,全面介绍Python函数的相关知识。

基础

定义和调用函数

在Python中,使用def关键字定义函数。

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

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

参数和返回值

函数可以接收参数,并返回一个值。

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

result = add(3, 4)
print(result)  # 输出: 7

默认参数

在定义函数时,可以给参数指定默认值。

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

print(power(3))     # 输出: 9
print(power(3, 3))  # 输出: 27

可变参数

使用星号(*)定义可变数量的参数。

python 复制代码
def make_greeting(*names):
    return ", ".join(names) + "!"

print(make_greeting("Alice", "Bob", "Charlie"))  # 输出: Alice, Bob, Charlie!

关键字参数

使用两个星号(**)定义接受任意数量关键字参数的函数。

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

build_person("Alice", age=30, job="Engineer")

高阶

函数注解

Python 3.0+支持函数注解,可以为函数参数和返回值提供元数据。

python 复制代码
def greet(name: str) -> str:
    return f"Hello, {name}!"

print(greet.__annotations__)  # 输出: {'name': <class 'str'>, 'return': <class 'str'>}

Lambda表达式

Lambda表达式是简洁定义小函数的方式。

python 复制代码
add = lambda x, y: x + y
print(add(5, 6))  # 输出: 11

高阶函数

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

python 复制代码
def apply_function(func, x):
    return func(x)

def square(x):
    return x * x

print(apply_function(square, 5))  # 输出: 25

装饰器

装饰器是修改其他函数功能的函数。

python 复制代码
def my_decorator(func):
    def wrapper():
        print("Something is happening before the function is called.")
        func()
        print("Something is happening after the function is called.")
    return wrapper

@my_decorator
def my_function():
    print("Hello from my_function!")

my_function()

生成器

使用yield关键字定义生成器,用于惰性计算。

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

counter = count_down(3)
print(next(counter))  # 输出: 3
print(next(counter))  # 输出: 2

应用示例

排序函数

使用lambda表达式和sorted函数进行排序。

python 复制代码
numbers = [5, 2, 9, 1, 5, 6]
sorted_numbers = sorted(numbers, key=lambda x: x % 2 == 0, reverse=True)
print(sorted_numbers)  # 输出: [5, 5, 9, 6, 2, 1]

带有装饰器的日志记录

使用装饰器记录函数调用日志。

python 复制代码
def logger(func):
    def wrapper(*args, **kwargs):
        print(f"Calling {func.__name__} with args: {args}, kwargs: {kwargs}")
        result = func(*args, **kwargs)
        print(f"{func.__name__} returned {result}")
        return result
    return wrapper

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

add(3, 4)  # 输出日志和结果

总结

Python函数是编程中的基础构件,它们不仅可以完成特定任务,还可以通过高级特性如装饰器、生成器等增强功能。掌握Python函数的基础知识和高级应用,对于编写高效、可维护的代码至关重要。通过本文的介绍,你应该对Python函数有了更深入的理解,并能够在实际开发中灵活运用。

✅作者简介:热爱科研的人工智能开发者,修心和技术同步精进

❤欢迎关注我的知乎:对error视而不见

代码获取、问题探讨及文章转载可私信。

☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。

🍎获取更多人工智能资料可点击链接进群领取,谢谢支持!👇

点击领取更多详细资料

相关推荐
老白干32 分钟前
jjwt 0.9.1 在 JDK 11+ 上的两个“坑”与完整解决方案
java·python·log4j
花青泽1 小时前
5-数据库-SQL注入-联合查询-关键字绕过-day13
数据库·sql
笨鸟先飞,勤能补拙7 小时前
AI 赋能网络安全:技术全景、成熟度评估与实战案例
人工智能·python·安全·web安全·网络安全·sqlite·github
天桥下的卖艺者7 小时前
使用scitable包,两步生成逆概率删失权重(IPCW)
数据库·r语言
微学AI7 小时前
一根针指向所有方向:挂谷猜想对 LLM Agent 技能-记忆架构的启示
开发语言·人工智能·架构·挂谷猜想
隔窗听雨眠8 小时前
AI原生数据库浪潮:国产数据库的架构重构与路径之争
数据库
长和信泰光伏储能8 小时前
京津冀光伏发电:绿色能源的未来之路
python·能源
数据库小学妹8 小时前
数据库选型实战:从数据类型到TCO成本,五维决策框架+九款产品横评
数据库·信创·国产数据库·数据库选型·oracle迁移
豆瓣鸡8 小时前
算法日记 - Day3
java·开发语言·算法
浦信仿真大讲堂8 小时前
从重复操作到自动化闭环:如何让 CST 与 Python 真正协同起来
python·自动化·cst·仿真软件·达索软件