函数知识点2
1.变量作用域----变量在定义完成后可以使用的范围
分为:全局变量与局部变量
1)全局变量
没有定义在函数里面或者类里面的变量都是全局变量。
作用域:从定义开始,到程序结束(到任何位置)
a=10
for x in range():
print(a) #任何位置都可以用
若:
for x in range()
b=10 #x、b都是全局变量
2)局部变量
在函数中的变量就是局部变量(定义在类中的变量是属性)
作用域:从定义开始到函数结束
(形参就是局部变量)
def fun1(c):
d=10 #c、d都是局部变量,不能在函数外部使用。
3)变量存储方法
全局变量保存在全局栈区间(程序结束时才会被释放),局部变量默认是保存在临时栈区间中(创建函数时创建出来,函数调用结束会自动释放)
函数中定义变量前加global关键字,让函数中定义变量可以保存在全局栈区间中。
x=1
def fun1():
y=200
golbal z
z=100
#x、z保存在全局栈区间,y保存在局部栈区间
如果想要在函数里面修改一个全局变量值,必须加global 对变量进行说明
4)函数参数的确定
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aksrgB3k-1659444519709)(E:\BaiduSyncdisk\前锋学习\第三周\day2-函数进阶\QQ截图20220802181419.jpg)]
1.调用函数时,实参到底给什么样的数据,由什么决定?
由参数在函数体中的使用方式来决定。
2.实参高阶函数----函数的参数是函数-----(相当于数学中的复合函数)
如果一个参数是函数,传参的时候有两种方法:
方法一:用普通函数的函数名
方法二:使用匿名函数
3.匿名函数
实质:只能实现简单的功能,用一条语句来实现的功能,本质还是函数。
语法:函数名=lambda 形参列表:返回值
相当于: def 函数名(形参列表):
return
#定义一个函数求两个数的和
sum2=lambda num1,num2 :num1+num2
print(sum2(10,20))
print(sum2(num1=100,num2=200))
运用:在给实参高阶函数传参的时候使用。
def fun1(x):
print(x(10,20)+20)
# X是一个函数,有两个参数,有一个数字对应的返回值
def temp(m,n)
return12.3
fun1(temp1)
fun1(lambda m,n:12)----匿名
能使用匿名函数就使用匿名函数,不行才用普通函数
4.实参高阶函数的运用:
1.max、min、sorted
(低级用法)max(序列)----求序列中元素的大小,求出最大值
(高级用法)max(序列,key=函数)-----按照函数指定的比较规则,比较元素的大小求出最大值
函数的要求:1.必须只有一个参数(参数代表序列中的每一个元素)
2.需要一个返回值(返回值就是比较对象)
若求num的最值
nume=[10,2,3,3,245,566]
result=max(nums,key=lambda item:item)
print(result)
比较num中个位数最大的元素
result=max(nums,key=lambda item:item%10)
nums中各个位数之和最大的元素(用函数求解)
方法一:
nums = [102, 19, 48, 221, 52]
result=max(nums,key=lambda item: sum(int(x) [for x in str(item)]))
print(result)
方法二:
def temp(item):
sum1=0
for x in str(item):