当前位置:网站首页>学习总结week3_2函数进阶
学习总结week3_2函数进阶
2022-08-05 05:13:00 【非鱼丶丶】
python函数进阶
一、函数返回值
1)返回就是从函数内容传递到函数外部的数据(python中每个函数都可以传的一个数据到函数的外部)
2)怎么确定一个函数的返回值(怎么在函数的内容将数据传递到函数的外部)
return后面的值就是函数的返回值(执行函数体的时候如果遇到return,其后面的值就是函数的返回值)
return在函数体还可以提前结束函数
3)怎么获取函数外部返回值
获取函数调用表达式的值就是获取这个函数的返回值
函数调用表达式 - 调用函数的语句
4)什么时候使用返回值:
如果实现函数的功能,产生新的数据,就将新的数据作为函数的返回值
一个函数只有一个返回值(一个函数最多一个return有效);如果想要吧多个数据作为函数的返回值返回,可以在一个return后面加多个数据
# 一个函数最多一个return有效
def func1(a, b):
res = a + b
res1 = a * b
return res, res1
print(func1(10, 20))
1.变量作用域 - 变量在定义完成后可以使用的范围
根据变量作用域的不同,分为一下两种
2.全局变量和局部变量
1)全局变量
没有定义在函数里面或者类里面的变量都是全局变量
作用域:从定义就开始,到程序结束(结束前任何位置)
for x in range(5):
b = 20
# x , b 都是全局变量
2)局部变量
定义在函数中的变量就是局部变量(定义在类中的变量是属性)
作用域:从定义到函数结束
# c和d都是局部变量
def func1(c):
d = 30
3.不同变量的存储方式
全局变量默认保存在全局栈区间(程序结束的时候才会被释放),
局部变量默认是保存在函数对应的临时栈区间中
(函数对应的临时栈区间,创建函数的时候会创建出来,函数调用结束会自动释放)
在函数中定义变量的时候,可以在定义变量前加global关键字,让函数中定义变量可以保存在全局栈区间中
global z
z = 1
二、调用函数
调用函数的时候,实参到底一个给什么样的数据,由什么东西决定
由参数在函数体中的使用方式来决定
实参高阶函数 - 函数要的的参数是函数
如果一个参数是函数,传参的时候有
def func1(x):
print(x(10) + 20)
def temp1():
return 11
1.匿名函数 - 简洁,但是功能简单,只能写一行
本质还是函数,但是只能实现简单的功能(一行语句)
语法:
函数名 = lambda 形参列表:返回值
相当于
def 函数名(形参列表):
return 返回值
2.匿名函数的应用
再给实参高阶函数传参的时候,可以使用普通函数函数名,也可以使用匿名函数(能用匿名函数就用)
x是一个函数;有两个参数,有一个数字对应的返回值
3.实参高阶函数
1.max min sorted
max(序列) - 直接比较序列中元素的大小,求最大值
max(序列, key=函数) - 按照函数制定的比较规则比较元素的大小,求最大值
函数的要求1.有且只有一个参数(代表序列中的某个元素)
2.需要一个返回值(返回值是比较对象 - 将参数看成元素,单在这个地方来描述)
# 练习1:求nums中十位数最大的元素: 90
nums = [9108, 23, 167, 90, 556, 149]
res = max(nums, key=lambda item: item % 100 // 10)
print(res)
# 练习2:求nums中绝对值最小的元素
num1 = [-992, 121, 78, -34, 99]
res1 = min(num1, key=lambda item: abs(item))
print(res1)
# 练习3:nums中各个位数之和最大的元素
num2 = [102, 19, 48, 221, 52]
# 3,10,12,5,7 -> 48
res2 = max(num2, key=lambda item: sum([int(i) for i in str(item)]))
print(res2)
# 练习4:将students中的元素按照分数从高到低排序
students = [
{
'name': '小明', 'age': 19, 'score': 89, 'gender': '男'},
{
'name': '小红', 'age': 22, 'score': 99, 'gender': '女'},
{
'name': '小胡', 'age': 28, 'score': 75, 'gender': '男'},
{
'name': '小花', 'age': 25, 'score': 80, 'gender': '女'},
{
'name': '李华', 'age': 17, 'score': 84, 'gender': '男'}
]
res3 = sorted(students, key=lambda x: x['score'], reverse=True)
print(res3)
2.map - 基于原序列中的元素创建一个新的序列
map(函数, *seq) - 根据函数制定规则,将指定序列中的元素转换成新序列中的元素
函数的要求:a.有且只有n个参数
b.有返回值(返回值对应的就是新序列中的元素)
# 练习1:将nums中所有的元素乘以10
nums = [82, 67, 89, 6617, 90, 23, 71]
num1 = map(lambda num1: num1 * 10, nums)
print(list(num1))
# 练习2:基于scores创建一个列表,列表中元素根据nums中元素确定为'及格'或者'不及格'
scores = [82, 67, 89, 66, 90, 23, 71]
# ['及格', '及格', '及格', '及格', '不及格', '及格']
list1 = map(lambda item: '及格' if item > 60 else '不及格', scores)
print(list(list1))
# 练习3:基于names、ages和scores,创建学生列表:
names = ['stu1', 'stu2', 'stu3', 'stu4']
ages = [23, 34, 19, 22]
scores = [82, 67, 89, 66]
# [{'name': 'stu1', 'age': 23, 'score': 82}, .....]
res4 = map(lambda i1, i2, i3: {
'name': i1, 'age': i2, 'score': i3}, names, ages, scores)
print(list(res4))
3.reduce - 将序列中所有的元素通过指定的规则合并成一个数据
reduce(函数, 序列, 默认值)
函数的要求:1.有且只有两个参数(第一个参数指向默认值,第二个参数指向序列中的每个元素)
2.需要一个返回值(藐视合并方式,说清楚最后的结果是初始值和序列中元素进行什么样的操作得到的)
from functools import reduce
# 例 求nums中所有元素的和
nums = [10, 20, 30, 40]
res = reduce(lambda i, item: i + item, nums, 0)
边栏推荐
猜你喜欢

Flutter learning 5-integration-packaging-publish

将照片形式的纸质公章转化为电子公章(不需要下载ps)

The mall background management system based on Web design and implementation

【过一下3】卷积&图像噪音&边缘&纹理

Flutter learning 2-dart learning

Flex layout frog game clearance strategy

【过一下10】sklearn使用记录

第二讲 Linear Model 线性模型

第四讲 反向传播随笔

MySQL Foundation (1) - Basic Cognition and Operation
随机推荐
Cryptography Series: PEM and PKCS7, PKCS8, PKCS12
2022杭电多校第一场01
coppercam入门手册[6]
Community Sharing|Tencent Overseas Games builds game security operation capabilities based on JumpServer
类的底层机制
Wise Force Deleter强制删除工具
shell函数
淘宝账号如何快速提升到更高等级
使用二维码解决固定资产管理的难题
Flutter real machine running and simulator running
【过一下 17】pytorch 改写 keras
Detailed Explanation of Redis Sentinel Mode Configuration File
Error creating bean with name 'configDataContextRefresher' defined in class path resource
【解码工具】Bitcoin的一些在线工具
【过一下8】全连接神经网络 视频 笔记
Understanding and use of C# on set() and get() methods
【过一下11】随机森林和特征工程
逆向理论知识4
【过一下3】卷积&图像噪音&边缘&纹理
Dashboard Display | DataEase Look at China: Data Presents China's Capital Market