Python.03.函数使用

news/2024/11/8 0:02:42/

目录

函数与方法的区别

函数的定义

传参的情况

常见传参

其他传参

 函数的返回值

函数嵌套

Lambda表达式

字典排序

map函数

filter函数

函数与方法的区别

直接调用的是函数 ,通过对象点出来的是方法

print("hello")
a = [2, 1, 3]
a.sort()
print(a)

 

函数的定义

常规函数定义,有返回值的,跟无返回值的

def hello(name):print(f"{name} say hello")
​
hello("zhangsan")
​
def add(a,b):return a + b
​
print(add(1, 2))
​
def dele(a,b):print(a - b)
​
print(dele(1, 2))

Python对于参数的传入是没有类型限制的

不过可以通过给参数添加类型,提示调用时应传入的类型

def add(a: int, b: int):return a + b
​
c = add("a", 2)
print(c)

传参的情况

常见传参

1.位置传参
2.关键字传参
3.缺省传参# 位置传参
res(1, 2)
# 关键字传参
res(a=1, b=2)
​
# 缺省参数,给b设置了一个默认值
def res(a, b=3):print(a)print(b)
res(1)
res(1,2)

其他传参

1.可变传参-元组
2.可变传参-字典
# 可变传参-元组
# <class 'tuple'>
# def aaa(*arr):
#     print(arr)
#     print(type(arr))
#
#
# aaa(1, 2, 3)
# aaa({1, 2, 3}, {1, 2, 3})
# aaa({1, 2, 3})
# aaa(1)
​
# 可变传参-字典
# <class 'dict'>
def aaa(**arr):print(arr)print(type(arr))
​
​
aaa(a=1, b=2, c=3, d=4)
aaa(a={1}, b={2}, c={3}, d={4})
aaa(a={1})
aaa(a=1)

 函数的返回值

1.返回值不限类型,所以不需要指定返回类型

2.使用 return 关键字

3.可以通过元组的形式返回多个值

编写一个函数,接受多个参数,返回最大值,最小值与总和

def sum(*arr):min = 0max = 0total = 0for i in arr:min = min if min < i else imax = max if max > i else itotal += ireturn min, max, total
​
​
res = sum(1, 4, 7, 9, 8, 3, 2)
print(res)

函数嵌套

递归求和1-100的和

def sum(n):if n < 2:return nelse:return n + sum(n - 1)
​
​
print(sum(100))

 

Lambda表达式

相当于匿名函数,可以简化目前的函数,在 java 中的流式操作与函数接口有体现。

//常规
Runnable r1=new Runnable() {@Overridepublic void run() {System.out.println("你好");}
};
//lambda表达式
Runnable r2=()->{System.out.println("你好");
};

但是 python 中的表达式只能存在一行代码,使用 python 中的 lambda 来简化函数

#形式: lamdba 参数 : 执行操作/返回值
aaa = lambda: 10
print(aaa)
print(aaa())bbb = lambda a: a + 10
print(bbb)
print(bbb(10))# 接受两个参数
ccc = lambda a, b: a + b
print(ccc(1, 2))# 编写一个函数,接受两个参数,并返回最大值
ddd = lambda a, b: a if a > b else b
print(ddd(2, 1))
print(ddd(2, 3))

字典排序

# 使用 lambda 对字典数据进行排序
persons = [{"name": "张三", "age": 20},{"name": "李四", "age": 17},{"name": "王麻子", "age": 21}
]
persons.sort(key=lambda p: p['age'], reverse=True)
print(persons)

map函数

# 将一个元素中所有的值翻倍 map
nums = [1, 2, 3, 4, 5, 6, 7]
m = map(lambda a: a * 2, nums)
for i in m:print(i)
​
# # 让集合中的对应位置进行相加
nums1 = [1, 2, 3, 4, 5, 6, 7]
nums2 = [2, 3, 4, 5, 6, 7, 8]
m = map(lambda a, b: a + b, nums1, nums2)
for i in m:print(i)
​

filter函数

# 对集合进行筛选
nums = [1, 2, 3, 4, 5, 6, 7]
f = filter(lambda a: a > 5, nums)
for i in f:print(i)


http://www.ppmy.cn/news/2116.html

相关文章

C++ lambda表达式详解

一、lambda表达式基本用法 1、语法 Lambda 表达式的基本语法如下&#xff1a; 捕获列表 mutable(可选) 异常属性 -> 返回类型 { // 函数体 } 2、lambda值捕获 /*** brief lamdba值捕获*/ void test() {int nvalue 1;auto func_copyvalue [nvalue]{return nvalue;};nva…

SpringBoot —— 整合RabbitMQ常见问题及解决方案

前言 企业中最常用的消息中间件既不是RocketMQ&#xff0c;也不是Kafka&#xff0c;而是RabbitMQ。 RocketMQ很强大&#xff0c;但主要是阿里推广自己的云产品而开源出来的一款消息队列&#xff0c;其实中小企业用RocketMQ的没有想象中那么多。 至于Kafka&#xff0c;主要还是…

python 图形界面“诈金花”游戏,更新了!附完整代码

旧版本的代码请见上一篇博文&#xff1a; python 从一道作业题到制作一个图形界面的“诈金花”游戏_Hann Yang的博客-CSDN博客Player1: (♥Q, ♣2, ♣8) - 单张Player2: (♦10, ♥7, ♠6) - 单张Player3: (♣4, ♠4, ♦2) - 对子Player4: (♠5, ♠9, ♥6) - 单张Player5: (♠…

多数之和问题

文章目录多数求和问题1两数之和(无序)题解2两数之和(有序)题解3两数之和(二叉搜索树)题解4 三数之和题解5四数之和题解多数求和问题 针对给一组用例,和一个目标数target,求用例中多数相加等于target的所有数,且不能重复问题,一般有两种解法: 集合(不要求排序)双指针(要求排序…

springboot基于Java的电影院售票与管理系统毕业设计源码011449

电影院售票与管理系统的设计与实现 摘 要 信息化社会内需要与之针对性的信息获取途径&#xff0c;但是途径的扩展基本上为人们所努力的方向&#xff0c;由于站在的角度存在偏差&#xff0c;人们经常能够获得不同类型信息&#xff0c;这也是技术最为难以攻克的课题。针对电影院售…

JVM—双亲委派

文章目录什么是双亲委派&#xff1f;为什么要有双亲委派原理&#xff1f;破坏双亲委派的例子————————————————————————————————什么是双亲委派&#xff1f; ​ 就是我们写的java源文件到最终运行&#xff0c;必须要经过编译和类加载这两个阶段…

Springboot企业资源管理信息系统kvonv计算机毕业设计-课程设计-期末作业-毕设程序代做

Springboot企业资源管理信息系统kvonv计算机毕业设计-课程设计-期末作业-毕设程序代做 【免费赠送源码】Springboot企业资源管理信息系统kvonv计算机毕业设计-课程设计-期末作业-毕设程序代做本源码技术栈&#xff1a; 项目架构&#xff1a;B/S架构 开发语言&#xff1a;Java…

TCP--三次握手和四次挥手

原文网址&#xff1a;TCP--三次握手和四次挥手_IT利刃出鞘的博客-CSDN博客 简介 本文介绍TCP的三次握手和四次挥手。即&#xff1a;TCP建立连接和断开连接的过程。 三次握手 流程图 主机 A为客户端&#xff0c;主机B为服务端。 第一次握手 A 发送同步报文段&#xff08;SYN…