当前位置: 首页 > news >正文

Python-函数

在这里插入图片描述

1. 函数基础

1.1 定义函数

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

def greet():"""简单的问候函数"""print("Hello, World!")

1.2 调用函数

定义函数后,可以通过函数名加括号来调用:

greet()  # 输出: Hello, World!

1.3 函数的文档字符串

函数的第一行字符串称为文档字符串(docstring),用于描述函数的功能:

def greet():"""这是一个简单的问候函数"""print("Hello, World!")print(greet.__doc__)  # 输出: 这是一个简单的问候函数

2. 函数参数

2.1 位置参数

def greet(name, greeting):print(f"{greeting}, {name}!")greet("Alice", "Hello")  # 输出: Hello, Alice!

2.2 默认参数

def greet(name, greeting="Hello"):print(f"{greeting}, {name}!")greet("Bob")  # 输出: Hello, Bob!
greet("Charlie", "Hi")  # 输出: Hi, Charlie!

2.3 关键字参数

def describe_pet(pet_name, animal_type="dog"):print(f"I have a {animal_type} named {pet_name}.")describe_pet(pet_name="Max")  # 输出: I have a dog named Max.
describe_pet(animal_type="cat", pet_name="Whiskers")  # 输出: I have a cat named Whiskers.

2.4 可变参数

2.4.1 *args - 接收任意数量的位置参数
def make_pizza(*toppings):print("Making a pizza with:")for topping in toppings:print(f"- {topping}")make_pizza('pepperoni')
make_pizza('mushrooms', 'green peppers', 'extra cheese')
2.4.2 **kwargs - 接收任意数量的关键字参数
def build_profile(first, last, **user_info):user_info['first_name'] = firstuser_info['last_name'] = lastreturn user_infouser_profile = build_profile('albert', 'einstein',location='princeton',field='physics')
print(user_profile)

3. 返回值

使用return语句从函数返回值:

def add(a, b):"""返回两个数的和"""return a + bresult = add(3, 5)
print(result)  # 输出: 8

4. 变量作用域

4.1 局部变量

def test_local():x = 10  # 局部变量print(x)test_local()  # 输出: 10
print(x)  # 报错: NameError: name 'x' is not defined

4.2 全局变量

x = 20  # 全局变量def test_global():print(x)  # 可以访问全局变量test_global()  # 输出: 20
print(x)  # 输出: 20

4.3 修改全局变量

x = 20def modify_global():global x  # 声明使用全局变量x = 30modify_global()
print(x)  # 输出: 30

5. Lambda函数

Lambda函数是小型匿名函数:

square = lambda x: x ** 2
print(square(5))  # 输出: 25

6. 高阶函数

6.1 map()函数

numbers = [1, 2, 3, 4]
squared = list(map(lambda x: x**2, numbers))
print(squared)  # 输出: [1, 4, 9, 16]

6.2 filter()函数

numbers = [1, 2, 3, 4, 5, 6]
evens = list(filter(lambda x: x % 2 == 0, numbers))
print(evens)  # 输出: [2, 4, 6]

6.3 reduce()函数

from functools import reducenumbers = [1, 2, 3, 4]
product = reduce(lambda x, y: x * y, numbers)
print(product)  # 输出: 24

7. 装饰器

装饰器用于修改或扩展函数的行为:

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 say_hello():print("Hello!")say_hello()

8. 生成器函数

使用yield关键字创建生成器:

def count_up_to(max):count = 1while count <= max:yield countcount += 1counter = count_up_to(5)
for num in counter:print(num)  # 输出: 1 2 3 4 5

9. 递归函数

函数调用自身:

def factorial(n):if n == 1:return 1else:return n * factorial(n-1)print(factorial(5))  # 输出: 120

10. 闭包

函数嵌套并返回内部函数:

def outer_func(x):def inner_func(y):return x + yreturn inner_funcclosure = outer_func(10)
print(closure(5))  # 输出: 15

11. 函数注解

为函数参数和返回值添加类型注解:

def greet(name: str, age: int) -> str:return f"Hello {name}, you are {age} years old."print(greet("Alice", 30))

12. 内置函数

Python有许多内置函数,如:

  • len(), print(), input()
  • max(), min(), sum()
  • sorted(), reversed()
  • abs(), round(), pow()
  • type(), isinstance()
  • open(), range(), enumerate()
  • zip(), iter(), next()

13. 最佳实践

  1. 函数应该只做一件事
  2. 保持函数简短
  3. 使用描述性的函数名
  4. 避免过多的参数
  5. 使用默认参数简化调用
  6. 为函数添加文档字符串
  7. 考虑使用类型注解

14. 总结

Python函数是代码重用的基本单元,掌握函数的使用对于编写清晰、模块化和可维护的代码至关重要。从简单的函数定义到高级特性如装饰器和生成器,Python提供了丰富的功能来满足各种编程需求。

相关文章:

Python-函数

1. 函数基础 1.1 定义函数 在Python中&#xff0c;使用def关键字来定义函数&#xff1a; def greet():"""简单的问候函数"""print("Hello, World!")1.2 调用函数 定义函数后&#xff0c;可以通过函数名加括号来调用&#xff1a; …...

【Redis】数据的淘汰策略

目录 淘汰策略方案&#xff08;8种&#xff09; LRU和LFU策略的区别 使用建议 手搓LRU算法 方式一 方式二 大家好&#xff0c;我是jstart千语。今天和大家回来聊一下redis&#xff0c;这次要讲的是它的淘汰策略。为什么需要淘汰策略呢&#xff0c;就是当redis里面的内存占…...

第七章:从类库到服务的分布式基石_《凤凰架构:构建可靠的大型分布式系统》

第七章&#xff1a;从类库到服务的分布式基石 一、服务发现&#xff08;Service Discovery&#xff09; 核心目标&#xff1a;解决分布式系统中服务实例动态变化时如何定位可用服务的问题。 1. 服务发现的意义 动态环境挑战&#xff1a; 微服务架构中&#xff0c;服务实例的…...

spring-ai-alibaba第九章使用Milvus构建大模型RAG应用

1、pom文件 <dependencies><dependency><groupId>com.alibaba.cloud.ai</groupId><artifactId>spring-ai-alibaba-starter</artifactId><version>${spring-ai-alibaba.version}</version></dependency><dependency&g…...

手撕LLM(一):从源码出发,探索LLM推理全流程

2025年&#xff0c;大模型爆发元年&#xff0c;各种各样的大模型、框架、工具层出不穷&#xff0c;不断刷新人们应用大模型的门槛&#xff0c;短短10行代码&#xff0c;就能完成“加载模型加载数据集推理强化学习”的全流程训练&#xff0c;但其底层的运行机制也被高度抽象的接…...

讯飞语音听写(流式版)开发指南

语音交互大模型的功能越来越受到重视。讯飞语音听写&#xff08;流式版&#xff09;为开发者提供了一种高效、准确的语音识别解决方案。本文将基于 Home.vue、iat_xfyun.js 和 sparkChat.js 这三个文档&#xff0c;详细阐述讯飞语音听写&#xff08;流式版&#xff09;的开发逻…...

P3654 First Step (ファーストステップ)

题目描述 可是……这个篮球场&#xff0c;好像很久没有使用过的样子啊…… 里面堆满了学校的各种杂物呢…… 我们 Aqours 的成员要怎么在里面列队站下呢&#xff1f; 我们浦之星女子学院的篮球场是一个 R 行 C 列的矩阵&#xff0c;其中堆满了各种学校的杂物 (用 # 表示)&a…...

MySQL篇(六)MySQL 分库分表:应对数据增长挑战的有效策略

MySQL篇&#xff08;六&#xff09;MySQL 分库分表&#xff1a;应对数据增长挑战的有效策略 MySQL篇&#xff08;六&#xff09;MySQL 分库分表&#xff1a;应对数据增长挑战的有效策略一、引言二、为什么需要分库分表2.1 性能瓶颈2.2 存储瓶颈2.3 高并发压力 三、分库分表的方…...

SonarQube 配置SQL Server 数据库遇到的问题

之前本机跑了一套SonarQube的社区版&#xff0c;默认使用的是H2数据库&#xff0c;那么我把它练到我机器上的SQL Server数据库了&#xff0c;期间遇到以下两个问题&#xff0c;并在配置过程中解决掉&#xff0c;特将这个过程记录下来。 一、JDBC连接SQL Server问题 1. 问题出…...

23种设计模式-行为型模式-备忘录

文章目录 简介问题解决代码关键实现要点功能扩展方向 总结 简介 备忘录是一种行为设计模式&#xff0c; 允许在不暴露对象实现细节的情况下保存和恢复对象之前的状态。 问题 假如你正在开发一款文字编辑器应用。你想加入撤销功能。你可以采用直接的方式来实现: 程序在执行任…...

IDEA/WebStrom操作之commit前批量清除console.log()与debugger

前言&#xff1a; 在前端开发过程中&#xff0c;往往需要频繁用到console.log()与debugger&#xff0c;来观察数据具体情况以及断点调试。在经历了水生火热的开发动作后&#xff0c;往往会残留一地console.log()和debugger&#xff0c;若开发者还得手动在多个文件中一个个去除…...

每日算法-250405

34. 在排序数组中查找元素的第一个和最后一个位置 题目 思路 本题的核心思路是二分查找。 解题过程 问题分析&#xff1a;在一个升序排列的数组中查找一个目标值 target 的起始和结束位置。这是一个典型的二分查找应用场景。核心转换&#xff1a;题目要求找到 target 的第一个…...

设计模式简述(四)模板方法模式

模板方法模式 描述基本定义使用 描述 当一系列业务的基本流程是相同的&#xff0c;对于不同的业务可以在各自子类实现 所谓模板方法指的就是父类中固定的那部分代码 其实这里的思想和前面设计原则中开闭原则的描述是一致的&#xff0c;父类中的模板代码就是稳定的部分&#x…...

论文修改时有哪些需要注意的问题?

论文修改是学术写作中不可或缺的环节&#xff0c;直接影响成果的专业性和说服力。许多作者因忽略细节或急于定稿&#xff0c;导致论文质量大打折扣。那么&#xff0c;如何修改才能提升论文的严谨性与可读性呢&#xff1f; 一、逻辑结构 论文修改时&#xff0c;先从头到尾通读…...

JAVA阻塞队列

目录 一、什么是阻塞队列&#xff1f;特点是什么&#xff1f; 二、阻塞队列的两种创建方式&#xff1a; 1、使用 ArrayBlockingQueue<>( ) : 2、使用 LinkedBlockingQueue<>( ) &#xff1a; 三、阻塞队列方法的使用&#xff1a; 阻塞队列关键的两个方法&…...

tomcat与spring-web

文章目录 SpringServletContainerInitializerWebApplicationInitializerWebApplicationInitializer接口AbstractContextLoaderInitializer抽象类AbstractDispatcherServletInitializer抽象类AbstractAnnotationConfigDispatcherServletInitializer抽象类 WebApplicationContext…...

将电脑控制手机编写为MCP server

文章目录 电脑控制手机后,截屏代码复习MCP server构建修改MCP的config文件测试效果困惑电脑控制手机后,截屏代码复习 def capture_window(hwnd: int, filename: str = None) -> dict:""&...

[ctfshow web入门]burpsuite的下载与使用

下载 吾爱破解网站工具区下载burpsuite https://www.52pojie.cn/thread-1544866-1-1.html 本博客仅转载下载链接&#xff0c;下载后请按照说明进行学习使用 打开 配置 burpsuite配置 burpsuite代理设置添加127.0.0.1:8080 浏览器配置 如果是谷歌浏览器&#xff0c;打开win…...

文章记单词 | 第25篇(六级)

一&#xff0c;单词释义 mathematical&#xff1a;形容词&#xff0c;意为 “数学的&#xff1b;数学上的&#xff1b;运算能力强的&#xff1b;关于数学的”trigger&#xff1a;名词&#xff0c;意为 “&#xff08;枪的&#xff09;扳机&#xff1b;&#xff08;炸弹的&…...

讯飞语音合成(流式版)语音专业版高质量的分析

一、引言 在现代的 Web 应用开发中&#xff0c;语音合成技术为用户提供了更加便捷和人性化的交互体验。讯飞语音合成&#xff08;流式版&#xff09;以其高效、稳定的性能&#xff0c;成为了众多开发者的首选。本文将详细介绍在 Home.vue 文件中实现讯飞语音合成&#xff08;流…...

【MediaPlayer】基于libvlc+awtk的媒体播放器

基于libvlcawtk的媒体播放器 libvlc下载地址 awtk下载地址 代码实现libvlc相关逻辑接口UI媒体接口实例化媒体播放器注意事项 libvlc 下载地址 可以到https://download.videolan.org/pub/videolan/vlc/去下载一个vlc版本&#xff0c;下载后其实是vlc的windows客户端&#xff0…...

复古未来主义屏幕辉光像素化显示器反乌托邦效果PS(PSD)设计模板样机 Analog Retro-Futuristic Monitor Effect

这款模拟复古未来主义显示器效果直接取材于 90 年代赛博朋克电影中的黑客巢穴&#xff0c;将粗糙的屏幕辉光和像素化的魅力强势回归。它精准地模仿了老式阴极射线管显示器&#xff0c;能将任何图像变成故障频出的监控画面或高风险的指挥中心用户界面。和……在一起 2 个完全可编…...

Kafka 如何保证消息有序性?

Kafka 保证消息顺序性&#xff0c;是基于 Partition&#xff08;分区&#xff09;级别的顺序 来实现的。下面我们详细拆解一下&#xff1a; ✅ 同一个 Partition 内&#xff0c;消息是严格有序的 Kafka 在 同一个分区&#xff08;Partition&#xff09;内&#xff0c;消息是按…...

【积木画】——第十三届蓝桥杯(2022)T7思路解析

题目描述 关键词 递推、dp 思路 显然这是一道递推题。 但是为什么我还要写在这呢&#xff1f;因为我虽然看了题解但是还是没想明白&#xff0c;综合了下面两篇 参考文献我才初步理解这题的精髓。所以还是自己写一遍为好。 我们把最终结果记为F(n)。 情况1 直接以一个竖着…...

Android studio xml布局预览中 Automotive和Autotive Distant Display的区别

在 Android Studio 中&#xff0c;Configure Hardware Profile 设置中的 Device Type 选项有两个不同的设置&#xff1a;Android Automotive 和 Android Automotive Distant Display&#xff0c;它们的含义和用途如下&#xff1a; 1. Android Automotive 含义&#xff1a;这个…...

第十三章:持久化存储_《凤凰架构:构建可靠的大型分布式系统》

第十三章 持久化存储 一、Kubernetes存储设计核心概念 &#xff08;1&#xff09;存储抽象模型 PersistentVolume (PV)&#xff1a;集群级别的存储资源抽象&#xff08;如NFS卷/云存储盘&#xff09;PersistentVolumeClaim (PVC)&#xff1a;用户对存储资源的声明请求&#…...

Nginx 基础使用(2025)

一、Nginx目录结构 [rootlocalhost ~]# tree /usr/local/nginx /usr/local/nginx ├── client_body_temp # POST 大文件暂存目录 ├── conf # Nginx所有配置文件的目录 │ ├── fastcgi.conf # fastcgi相…...

Docker基础1

本篇文章我将从系统的知识体系讲解docker的由来和在linux中的安装下载 随后的文章会介绍下载镜像、启动新容器、登录新容器 如需转载&#xff0c;标记出处 docker的出现就是为了节省资本和服务器资源 当企业需要一个新的应用程序时&#xff0c;需要为它买台全新的服务器。这样…...

【奇点时刻】GPT4o新图像生成模型底层原理深度洞察报告

个人最近一直在关注openai的新图像生成特性&#xff0c;以下内容基于现阶段社区及研究者们对 GPT-4O 图像生成功能的公开测试、逆向分析与技术推测综合而成&#xff0c;OpenAI 并未正式发布完整的技术报告&#xff0c;因此本文为非官方推断总结。但从多方信息与技术背景出发&am…...

Java的Selenium的特殊元素操作与定位之模态框

Modal Dialogue Box&#xff0c;又叫做模式对话框&#xff0c;是指在用户想要对对话框以外的应用程序进行操作时&#xff0c;必须首先对该对话框进行响应。如单击【确定】或【取消】按钮等将该对话框关闭。 alert&#xff08;警告&#xff09; //访问本地的HTML文件 chromeDr…...

回归预测 | Matlab实现NRBO-Transformer-LSTM多输入单输出回归预测

回归预测 | Matlab实现NRBO-Transformer-LSTM多输入单输出回归预测 目录 回归预测 | Matlab实现NRBO-Transformer-LSTM多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.【JCR一区级】Matlab实现NRBO-Transformer-LSTM多输入单输出回归预测&#xf…...

Python菜鸟教程(小程序)

目录 一.简易计算器 二.学生成绩分级 三.密码设置 四.作业选择 点赞收藏,评论支持 一.简易计算器 print(-------使用的运算符-------\n) print(1.加号) print(2.减号) print(3.乘号) print(4.除号) Aint(input(请输入第一个数: )) Bint(input(请输入第二个数: )) Fi…...

类的(多态性、虚函数)基础练习

练习1&#xff1a;&#xff08;简单&#xff09; #include <iostream> using namespace std; class Vehicle { public: virtual void run() const0; }; class Car: public Vehicle { public: void run() const { cout << "run a car. "<<…...

特殊的质数肋骨--dfs+isp

1.dfs全排列组数&#xff0c;an记得还原 2.如果范围确定且只比较质数&#xff0c;isp比线性筛快&#xff0c;主要这个范围太大了 https://www.luogu.com.cn/problem/P1218 #include<bits/stdc.h> using namespace std; #define N 100011 typedef long long ll; typed…...

智能体开发实战指南:提示词设计、开发框架与工作流详解

在大语言模型&#xff08;LLM&#xff09;驱动的智能体&#xff08;Agent&#xff09;快速发展的今天&#xff0c;构建一个实用、智能的Agent已不再遥不可及。无论你是开发法律助手、租房合同分析器&#xff0c;还是通用办公自动化助手&#xff0c;理解提示词工程&#xff08;P…...

jetson orin nano学习(torch+OpenCV+yolov5+)

一&#xff1a;入门第一件事&#xff1a;跟着商家教程配置哈哈 指令&#xff1a;nvidia-smi -h 帮助命令 sudo jtop --查看nvidia的gpu状态 Tip:教程下载的pytorth,cuda,cudnn版本不一定是你项目符合的&#xff0c;要提前想好 1.2 安装虚拟环境包&#xff08;要安…...

client-go如何监听自定义资源

如何使用 client-go 监听自定义资源 在 Kubernetes 中使用 client-go 监听自定义资源&#xff08;Custom Resource&#xff0c;简称 CR&#xff09;需要借助 Dynamic Client 或 Custom Informer&#xff0c;因为 client-go 的标准 Clientset 只支持内置资源&#xff08;如 Pod…...

【51单片机】3-3【定时器/计数器/中断】超声波测距模块测距

1.硬件 51最小系统超声波测距模块 2.软件 #include "reg52.h"//距离小于10cm,D5亮&#xff0c;D6灭&#xff0c;反之相反现象sbit D5 P3^7;//根据原理图&#xff08;电路图&#xff09;&#xff0c;设备变量led1指向P3组IO口的第7口 sbit D6 P3^6;//根据原理图&…...

C语言求3到100之间的素数

一、代码展示 二、运行结果 三、感悟思考 注意: 这个题思路他是一个试除法的一个思路 先进入一个for循环 遍历3到100之间的数字 第二个for循环则是 判断他不是素数 那么就直接退出 这里用break 是素数就打印出来 在第一个for循环内 第二个for循环外...

金仓数据库KCM认证考试介绍【2025年4月更新】

KCM&#xff08;金仓认证大师&#xff09;认证是金仓KES数据库的顶级认证&#xff0c;学员需通过前置KCA、KCP认证才能考KCM认证。 KCM培训考试一般1-2个月一次&#xff0c;KCM报名费原价为1.8万&#xff0c;当前优惠价格是1万&#xff08;趋势是&#xff1a;费用越来越高&…...

leetcode每日一题:替换子串得到平衡字符串

引言 今天的每日一题原题是1863. 找出所有子集的异或总和再求和&#xff0c;比较水&#xff0c;直接对于集合中的每一个元素&#xff0c;都有取或者不取2种情况&#xff0c;直接递归进去求和即可。更换成前几天遇到的更有意思的一题来写这个每日一题。 题目 有一个只含有 Q,…...

2025年数字化社会与智能计算国际学术会议 (ICDSIC 2025)

基本信息 官网&#xff1a;www.icdsic.net 时间&#xff1a;2025年4月18-20日 地点&#xff1a;中国-深圳 主题 数字化社会 智能计算 数字化制造、经济 数字化政务、转型 数字化农业、水利、管理 数字化医疗、学习、社区 数字基建、通信、交通 数字…...

BN测试和训练时有什么不同, 在测试时怎么使用?

我们来彻底搞懂 Batch Normalization&#xff08;BN&#xff09; 在训练和测试阶段的区别&#xff0c;以及 测试时怎么用。 &#x1f9e0; 一句话总结&#xff1a; 训练时&#xff1a;使用 当前 mini-batch 的均值和方差 测试时&#xff1a;使用 整个训练集估计的“滑动平均均值…...

为什么卷积神经网络适用于图像和视频?

我们常听说“卷积神经网络&#xff08;CNN&#xff09;擅长图像和视频”&#xff0c;但其实 CNN 的核心本质远不止图像领域。我们先搞懂它为啥适合图像/视频。 &#x1f9e0;CNN 为什么适用于图像和视频&#xff1f; 主要因为 图像/视频具有空间局部性和结构平移性&#xff0c…...

python爬虫:DrissionPage实战教程

如果本文章看不懂可以看看上一篇文章&#xff0c;加强自己的基础&#xff1a;爬虫自动化工具&#xff1a;DrissionPage-CSDN博客 案例解析&#xff1a; 前提&#xff1a;我们以ChromiumPage为主&#xff0c;写代码工具使用Pycharm&#xff08;python环境3.9-3.10&#xff09; …...

【Python爬虫高级技巧】BeautifulSoup高级教程:数据抓取、性能调优、反爬策略,全方位提升爬虫技能!

大家好&#xff0c;我是唐叔&#xff01;上期我们聊了 BeautifulSoup的基础用法 &#xff0c;今天带来进阶篇。我将分享爬虫老司机总结的BeautifulSoup高阶技巧&#xff0c;以及那些官方文档里不会告诉你的实战经验&#xff01; 文章目录 一、BeautifulSoup性能优化技巧1. 解析…...

【动手学深度学习】卷积神经网络(CNN)入门

【动手学深度学习】卷积神经网络&#xff08;CNN&#xff09;入门 1&#xff0c;卷积神经网络简介2&#xff0c;卷积层2.1&#xff0c;互相关运算原理2.2&#xff0c;互相关运算实现2.3&#xff0c;实现卷积层 3&#xff0c;卷积层的简单应用&#xff1a;边缘检测3.1&#xff0…...

IPSG 功能协议

IPSG&#xff08;IP Source Guard&#xff09;即 IP 源保护&#xff0c;是一种基于 IP 地址和 MAC 地址绑定的安全功能&#xff0c;用于防止 IP 地址欺骗和非法的 IP 地址访问。以下是配置 IPSG 功能的一般步骤&#xff1a; 基于端口的 IPSG 配置 进入接口配置模式&#xff1…...

19.go日志包log

核心功能与接口 基础日志输出 Print 系列&#xff1a;支持 Print()、Println()、Printf()&#xff0c;输出日志不中断程序。 log.Print("常规日志") // 输出: 2025/03/18 14:47:13 常规日志 log.Printf("格式化: %s", "数据") Fatal…...

横扫SQL面试——TopN问题

横扫SQL面试 电商平台的"销量Top10商品"&#x1f6cd;️&#xff0c;内容社区的"热度Top5文章“”&#x1f525;&#xff0c;还是金融领域的"交易额Top3客户"&#x1f4b0;——TopN问题无处不在&#xff01; 无论是日常业务分析&#x1f4ca;&#x…...