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

news2024/9/17 8:18:47

概述

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

基础

定义和调用函数

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

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

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

参数和返回值

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

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

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

默认参数

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

def power(base, exponent=2):
    return base ** exponent

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

可变参数

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

def make_greeting(*names):
    return ", ".join(names) + "!"

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

关键字参数

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

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+支持函数注解,可以为函数参数和返回值提供元数据。

def greet(name: str) -> str:
    return f"Hello, {name}!"

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

Lambda表达式

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

add = lambda x, y: x + y
print(add(5, 6))  # 输出: 11

高阶函数

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

def apply_function(func, x):
    return func(x)

def square(x):
    return x * x

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

装饰器

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

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关键字定义生成器,用于惰性计算。

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函数进行排序。

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]

带有装饰器的日志记录

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

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视而不见

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

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

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

点击领取更多详细资料

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2116826.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C# Dotfuscator加密dll设置流程

按照以下步骤处理后&#xff0c;反编译基本只能看到函数名&#xff0c;看不到源代码 1.Input 2.Setting 3.Rename 4.Rename 5.Control Flow 6.String Encryption 7.Output

【stata】自写命令分享dynamic_est,一键生成dynamic effect

1. 命令简介 dynamic_est 是一个用于可视化动态效应&#xff08;dynamic effect&#xff09;的工具。它特别适用于事件研究&#xff08;event study&#xff09;或双重差分&#xff08;Difference-in-Differences, DID&#xff09;分析。通过一句命令即可展示动态效应&#xf…

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求&#xff0c;要求做一款播放器&#xff0c;发现能力上跟EasyPlayer.js基本一致&#xff0c;满足要求&#xff1a; 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏&#xff08;单屏/全屏&#xff09; 多分屏&#xff08;2*2&#xff09; 多分屏…

JVM面试(七)G1垃圾收集器剖析

概述 上一章我们说了&#xff0c;G1收集器&#xff0c;它属于里程碑式的发展&#xff0c;开创了面向局部收集垃圾的概念。专门针对多核处理器以及大内存的机器。在JDK9中&#xff0c;更是呗指定为官方的GC收集器。满足高吞吐的通知满足GC的STW停顿时间尽可能的短。 虽然现在我…

恶意代码分析-Lab01-01

实验一 这个实验使用Lab01-01.exe和Lab01-01.d文件,使用本章描述的工具和技术来获取关于这些文件的信息。 问题: 将文件上传至 http:/www.VirusTotal.com/进行分析并查看报告。文件匹配到了已有的反病毒软件特征吗?这些文件是什么时候编译的?这两个文件中是否存在迹象说明它…

如何在docker容器中导入.sql文件

一、准备工作 确保容器运行&#xff1a; 首先确认包含 MySQL 服务的 Docker 容器正在运行。可以通过 docker ps 命令查看正在运行的容器列表。如果容器未运行&#xff0c;使用 docker start [container_id] 命令启动容器。 准备数据库文件&#xff1a; 将需要导入的数据库文件&…

VMware安装Ubuntu虚拟机

Ubuntu镜像下载 https://ubuntu.com/download/desktop 创建虚拟机 1.典型配置 2.稍后安装操作系统 3.选择操作系统&#xff0c;Linux&#xff0c;ubuntu64位 3.设置虚拟机名称和安装位置 4.磁盘大小&#xff0c;存储为单个文件 安装系统 1.选择镜像 2.开启虚拟机 2.安装Ub…

CTFHub技能树-Git泄漏-Log

目录 一、前提知识 1.git泄漏原理 ​编辑 2.git文件泄漏造成后果 3.利用方法 (1) GitHack是一个.git泄露利用脚本&#xff0c;通过泄露的.git文件夹下的文件&#xff0c;还原重建工程源代码。渗透测试人员、攻击者&#xff0c;可以进一步审计代码&#xff0c;挖掘&#x…

【重学 MySQL】十七、比较运算符的使用

【重学 MySQL】十七、比较运算符的使用 **等于&#xff08;&#xff09;**基本用法示例注意事项结论 **安全等于运算符&#xff08;<>&#xff09;****不等于&#xff08;<> 或 !&#xff09;**示例注意事项 **大于&#xff08;>&#xff09;、大于等于&#xf…

傅里叶级数,傅里叶变换

先读文章&#xff1a;傅里叶分析之掐死教程&#xff08;完整版&#xff09;更新于2014.06.06 - 知乎 (zhihu.com) 傅里叶级数 一、内容&#xff1a;每个周期性函数都可以表示为无穷多个不同频率的正弦函数的叠加。 二、公式&#xff1a; 三、从时域到频域所保留的三点信息&…

修改Anaconda中JupterLab的默认文件存储路径

安装好Anaconda后&#xff0c;使用JupterLab创建的文件会默认存储在C盘&#xff0c;每次打开业都是打开C盘&#xff0c;可以按照如下步骤修改默认存储路径 1.点击开始然后打开anconda prompt。 2.打开命令行输入 jupyter notebook --generate-config &#xff0c;点击回车&…

MySQL——表操作

目录 一、创建表 二、查看表 2.1 查看表中某成员的数据 2.2 查看整个表中的表成员 2.3 查看创建表时的句柄 三、修改表 alter 3.1 重命名 rename 3.2 新增一列 add 3.3 更改列属性 modify 3.4 更改列名称 change 3.5 删除某列 上一篇博客介绍了库的操作&#xff0c;…

零基础快速上手HarmonyOS ArkTS开发5---从简单的页面开始2---使用List组件构建列表、Grid组件构建网格布局

接着零基础快速上手HarmonyOS ArkTS开发4---从简单的页面开始继续往下学习页面布局的知识。最近发现之前学习这一章节的内容在官方已经被下了&#xff0c;替换成了另外一个案例了&#xff08;华为开发者学堂&#xff09;&#xff1a; 而且整个视频的风格也不一样了&#xff0c;…

DBeaver 24.0 高阶用法

DBeaver 24.0 高阶用法 文章目录 DBeaver 24.0 高阶用法DBeaver 介绍功能一、元数据搜索功能二、仪表盘显示功能三、ER图功能四、导出数据最后 DBeaver 介绍 DBeaver 确实是一款功能强大的通用数据库管理工具&#xff0c;适合所有需要以专业方式处理数据的用户。它不仅提供了直…

【笔记篇】Davinci Configurator BswM模块

目录 1 简介1.1 架构概览2 功能描述2.1 特性2.2 初始化2.3 状态机2.3.1 BSWM_INIT2.3.2 BSWM_WAIT_IMMEDIATE_REQUEST2.3.3 BSWM_MAIN_FUNCTION2.3.4 BSWM_MODE_ARBITRATION_AND_CONTROL2.3.5 BSWM_EMPTY_QUEUE2.3.6 BSWM_DEINIT2.4 模式管理2.4.1 即时模式处理2.4.2 强制即时模…

计算机毕业设计选题推荐-剧本杀创作与预约管理系统-Java/Python项目实战(亮点:数据可视化分析)

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

maven配置文件常用模板

注释很详细&#xff0c;直接上代码 项目结构 内容 父项目 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi…

系统架构师-ERP+集成

ERP 集成平台end&#xff1a;就懒得画新的页

快手的视频素材去哪找?快手视频素材在哪里找啊

要在快手这类短视频平台上脱颖而出&#xff0c;创意与剪辑技巧固然重要&#xff0c;但拥有高质量的视频素材同样关键。今天&#xff0c;我将推荐一些优秀的素材网站&#xff0c;它们能为你的快手视频增色不少。从动人的自然风景到日常的城市生活&#xff0c;这些网站提供的素材…

经济管理专业数据库介绍

本文介绍了四个经济管理专业数据库&#xff1a;国研网全文数据库、EPS数据平台、中经网、Emerald全文期刊库&#xff08;管理学&#xff09;。 一、国研网全文数据库 国研网是国务院发展研究中心主管、北京国研网信息有限公司承办的大型经济类专业网站。国研网教育版”是国研…