当前位置:网站首页>学习总结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)
边栏推荐
猜你喜欢
【Transfer】What is etcd
结构光三维重建(一)条纹结构光三维重建
【过一下12】整整一星期没记录
逆向理论知识4
How can Flutter parent and child components receive click events
Qt produces 18 frames of Cupid to express his love, is it your Cupid!!!
开发一套高容错分布式系统
Difference between for..in and for..of
使用二维码解决固定资产管理的难题
Develop a highly fault-tolerant distributed system
随机推荐
The difference between span tag and p
range函数作用
分布式和集群
Understanding and use of C# on set() and get() methods
u-boot debugging and positioning means
RL强化学习总结(一)
【过一下15】学习 lstm的一周
ESP32 485 Illuminance
[cesium] 3D Tileset model is loaded and associated with the model tree
第四讲 back propagation 反向传播
A blog clears the Redis technology stack
有用番茄来监督自己的同道中人吗?加一下我的自习室,一起加油
jvm three heap and stack
u-boot in u-boot, dm-pre-reloc
How does the Flutter TapGestureRecognizer work
Algorithms - ones and zeros (Kotlin)
LAB 信号量实现细节
Structured light 3D reconstruction (1) Striped structured light 3D reconstruction
数字_获取指定位数的小数
Flutter学习2-dart学习