Python学习-函数

news2024/12/24 16:42:47

函数

文章目录

  • 函数
    • 定义与调用
    • 参数传递
    • 内存分析
    • 返回值
    • 参数定义
      • 默认值参数
      • 个数可变的参数
      • 关键字参数
    • 变量的作用域
  • 匿名函数
    • 基本语法
    • 示例
    • lambda与排序
    • 高阶函数
      • map函数
      • reduce函数
      • filter函数
    • 多关键字排序

定义与调用

函数可以嵌套用

先定义后调用

def calc(a,b):
	c=a+b
	return c

result=calc(10,20)
print(result)

set()函数去掉重复的元素

参数传递

  • 位置实参, 按照对应位置接收值 , 实参和形参数目要相同

  • 传引用调用

  • 关键字a=10,b=20

在这里插入图片描述

内存分析

def fun(arg1,arg2):

在函数中,如果是不可变对象,不影响实参的值

形参改变,指向新对象

如果是可变对象,影响实参的值

如果不改变可变实参,则 lstcopy=lst[:]复制列表

谨慎使用可变对象做实参

diymod(x,y) (x//y,x%y)

pow(x,y),x的y次幂

返回值

def fun(nmu)
odd=[]
even=[]
for i%2:
	odd.append(i)
else:
	even.append(i)
return odd,even

1)如果函数没有返回值,return可以不写

2)返回值1个,直接返回类型

3)多个返回结果为元组

参数定义

默认值参数

如果没有传递默认值参数则使用默认值

比如times=1

传值则用传的值

个数可变的参数

def demo(*a) -》 demo(1,2)

*a可接收多个数

**kw 接收 x=1,b=2 会 变成字典

*(1,2)解包 相当于1,2

**{‘c’:1,‘v’:2}解包字典

关键字参数

针对实参 , 参数为a,b,c

b=3,c=2,a=1

不按照排列顺序

变量的作用域

同名变量作用域小的屏蔽作用域大的

在这里插入图片描述
修改全局变量 : global 如global x

修改外围变量 nonlocal

尽可能少用局部变量

如果不提前申明 , 出现在=左边为局部变量

一切皆对象,函数也可以作为实参

匿名函数

在Python中,可以使用lambda关键字来创建匿名函数,这些函数通常用于编写简洁的函数,而不需要使用def关键字定义一个正式的函数。

基本语法

lambda [参数1[,参数2]]:表达式

表达式可以调用其他函数,并且会自动返回值。

示例

t = lambda a, b, c: a + b + c  # 返回函数对象在内存地址
print(t(1, 2, 3))  # 执行函数对象

lambda与排序

sorted()函数可以对可迭代对象进行排序。

print(sorted([36, 5, -12, 9, -21], key=abs))

abs是绝对值函数,没有指定reverse参数时,默认为升序。

  • random.shuffle()用于打乱列表顺序。
  • data.sort(key=lambda x: x)使用元素本身作为排序的关键字。
  • data.sort(key=lambda x: len(str(x)), reverse=True)将元素转换为字符串,根据字符串长度进行降序排序。

高阶函数

高阶函数是指可以接受函数作为参数或者返回函数的函数。

map函数

map函数可以将一个函数应用到一个可迭代对象的每个元素上。

a = [1, 2, 3, 4, 5]
print(list(map(lambda x: x**2, a)))  # 将a中的每个元素映射到函数上,即平方

reduce函数

reduce函数通常用于累加操作,每次计算的结果都会作为下一次的输入。

from functools import reduce
print(reduce(lambda x, y: x + y, [1, 2, 3, 4, 5]))  # 累加操作

filter函数

filter函数用于过滤序列,过滤掉不符合条件的元素。

print(list(filter(lambda x: x % 2 != 0, [1, 2, 3, 4, 5])))  # 筛选出奇数

注意:mapfilter的结果都是迭代器,需要使用list函数来转换为列表才能看到返回值。

多关键字排序

# item[1], item[4] 在 [8, 2, 7, 1, 6] 中的是 (2, 6)
# 第一个:第一关键字,第二个:第二关键字,先看第一个数,第一个相同看第二个
print(sorted([8, 2, 7, 1, 6], key=lambda item: (item[1], item[4])))

# item[1], -item[4] 第5个元素降序
print(sorted([8, 2, 7, 1, 6], key=lambda item: (item[1], -item[4])))

在多关键字排序中,如果第一个关键字相同,则会比较第二个关键字,依此类推。

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

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

相关文章

【Java SE 题库】递归的魅力之--> 汉诺塔问题

🔥博客主页🔥:【 坊钰_CSDN博客 】 欢迎各位点赞👍评论✍收藏⭐ 目录 1. 题目 2. 分析 2.1 图解 2.2 代码解析 3. 完整代码 3.1 运行截图 4. 小结 1. 题目 汉诺塔问题是一个经典的递归问题,源自一个古老的印度传…

MYSQL MVCC多版本并发控制机制与原理、可重复读/读已提交原理

1,前置知识回顾 1.1,当前读和快照读 根据前面章节可知,mysql在【可重复读】(RR)的事务隔离机制下,同一个事务中的多次读取结果是一样的。而【读已提交】(RC)事务隔离机制&#xff0c…

Spring Integration + MQTT

1. 简介 Spring Integration: Spring Integration是一个开源的Java库,用于构建基于消息的应用程序。它提供了一套丰富的组件和工具,使得开发者可以轻松地开发出可靠、灵活和可扩展的集成解决方案。以下是Spring Integration的一些主要用途&…

剪辑视频怎么学?四大工具助你轻松入门!

无论是制作短视频、记录生活点滴,还是从事专业影视制作,掌握视频剪辑技巧都至关重要。那么,剪辑视频怎么学呢?本文将为大家推荐四款实用的视频剪辑工具,助你轻松入门! 福昕视频剪辑:简单易用&a…

基于SpringBoot+Vue的医院预约挂号管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

使用Postman搞定各种接口token实战!

现在许多项目都使用jwt来实现用户登录和数据权限,校验过用户的用户名和密码后,会向用户响应一段经过加密的token,在这段token中可能储存了数据权限等,在后期的访问中,需要携带这段token,后台解析这段token才…

1.1 前端技术的发展

大家好!今天,我将与大家分享一个非常有趣的话题——前端技术的发展。在这个数字化时代,前端技术已经成为我们日常生活中不可或缺的一部分。我们的学习目标是了解前端技术的发展,并探讨使用框架开发项目的优势。 首先,…

基于大模型LLama2+Langchain构建知识库问答系统

1 背景 知识库需求在各行各业中普遍存在,例如制造业中历史故障知识库、游戏社区平台的内容知识库、电商的商品推荐知识库和医疗健康领域的挂号推荐知识库系统等。传统知识库搜索系统基于关键字匹配,缺少对用户问题理解和答案二次处理能力。为保证推荐系…

Go-知识泛型

Go-知识泛型 1. 认识泛型1.1 不使用泛型1.2 使用泛型 2. 泛型的特点2.1 函数泛化2.2 类型泛化 3. 类型约束3.1 类型集合3.2 interface 类型集合3.2.1 内置interface类型集合3.2.2 自定义interface类型集合3.2.2.1 任意类型元素3.2.2.2 近似类型元素3.2.2.3 联合类型元素 3.2.3 …

腾讯云直播录制相关

直播录制的原理是什么? 对于一条直播流,一旦开启录制,音视频数据就会被旁路到录制系统。主播的手机推上来的每一帧数据,都会被录制系统追加写入到录制文件中。 一旦直播流中断,接入层会立刻通知录制服务器将正在写入的…

for深入学习作业

作业&#xff1a; 写一个程序判断1-100中9的个数 代码: #include<stdio.h> int main() {int i 9,sum0;for (i 9; i < 100; i) {if ((i % 10 9) || (i / 10 9)) {sum;}}printf("%d", sum);return 0; } //9 19 29 39 49 59 69 79 89 99 //91 92 93 94 …

LVGL设计汽车仪表盘(开源!!)

驾驶界面图 有图无真相&#xff0c;下面视频展示&#xff1a; 汽车仪表盘展示 资源已绑定&#xff0c;自行下载哦 关注我&#xff0c;后面出LVGL移植教程&#xff01;

在线拍卖|基于springBoot的在线拍卖系统设计与实现(附项目源码+论文+数据库)

私信或留言即免费送开题报告和任务书&#xff08;可指定任意题目&#xff09; 摘要 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单管理、留言板管理、系统管理&#xff0c;用户&am…

【动手学电机驱动】 TI InstaSPIN-FOC(1)电机驱动和控制测试平台

【动手学电机驱动】 TI InstaSPIN-FOC&#xff08;1&#xff09;电机驱动和控制测试平台 1. 本系列的资源需求1.1 电机驱动控制概况1.2 InstaSPIN-FOC 电机控制方案1.3 资源需求 2. 软件安装2.1 安装 CCS2.2 安装 MotorWare2.3 安装 ControlSUITE&#xff08;可选&#xff09; …

中科星图GVE(案例)——AI实现地块提取

目录 简介 函数 gve.Services.AI.plotExtraction(image) 代码 结果 知识星球 机器学习 简介 AI可以通过图像处理和机器学习算法实现地块提取。首先&#xff0c;AI可以对高分辨率遥感图像进行预处理&#xff0c;包括图像校正和去噪等处理。然后&#xff0c;AI可以使用图…

如何挑选Axure元件库? Axure原型赏析

在挑选Axure元件库时&#xff0c;可以从以下几个方面进行考虑和赏析&#xff0c;以确保选择到最适合项目需求的元件库&#xff1a; 一、元件库的全面性和丰富度 组件全面&#xff1a;优秀的Axure元件库应包含丰富的元件类型&#xff0c;以高效应对各种复杂业务流程的原型设计…

探索OAuth 2.0授权模式:全面解析与场景应用选择

文章目录 1. 什么是OAuth 2.0授权模式&#xff1f;2. 授权模式详解2.1 客户端凭证模式&#xff08;Client Credentials Grant&#xff09;2.2 授权码模式&#xff08;Authorization Code Grant&#xff09;2.3 简化模式/隐藏式&#xff08;Implicit Grant&#xff09;2.4 密码模…

解决:Ubuntu连接不上网络

今天莫名奇妙&#xff0c;我的ubuntu20.04断网了。检查了一下&#xff0c;使用的也是桥接模式&#xff0c;啥也没有变化。 然后我上Ubuntu16.04版本看了&#xff0c;那里又可以成功上网&#xff0c;所以&#xff0c;不是电脑的问题。 看了网上两个教程&#xff0c;解决了。 …

深入理解 Maven Profiles

前言 在现代软件开发中&#xff0c;项目通常需要部署到多种环境中&#xff0c;比如开发&#xff08;development&#xff09;、测试&#xff08;test&#xff09;和生产&#xff08;production&#xff09;。每种环境可能具有不同的配置需求。为了满足这种多样性&#xff0c;A…

还在找地图切片工具?这五款免费软件值得一试

地图切片&#xff08;Map Tiling&#xff09;是指将大型地图或影像数据按照一定的规则切割成多个较小的图块&#xff08;称为瓦片&#xff09;&#xff0c;并根据缩放级别和用户请求逐步加载这些瓦片&#xff0c;从而提升地图在网络或应用中的显示速度和效率。地图切片技术广泛…