python中变量的作用域(函数)
作用域(LEGB)
==local ==本地的 局部变量 encloseing 嵌套
global 全局变量 built-in 内置的
a=100 #全局变量
def func():
a=10 #嵌套
def funcion():
a=1 #局部变量
print(a)
func() 调用外部函数
f=func()调用内部函数
f()
a=100 #全局变量
def func():
a=10 #嵌套
def funcion():
a=1 #局部变量
print(a)
func() 调用外部函数
f=func()调用内部函数
f()
函数作用域:变量遵循就近原则。 (局部变量优先于嵌套变量,嵌套变量优先于全局变量,全局变量优先于内置函数;)
匿名函数
def funcion():
print("aaaaaa")
def add(a,b):
s = a + b
return s
以上函数过于繁琐所以引入了匿名函数;
**匿名函数:**简化了函数的定义;
**匿名函数格式:**lambda 参数1,参数2 :运算
例子:
s = lambda a, b: a+b
print(s)
输出:
<funcion<lambda>at 0x0000000001D11e18>
lambda是一个函数;
s(1,2)
输出:
<funcion<lambda>at 0x0000000001D11e18>
lambda是一个函数;
return=s(1,2)
输出:
3
匿名函数可以作为参数出现
def func(x,y,func):
print(x,y)
print(func)
s = func(x,y)
print(s)
#调用func
func(1,2,lambda 1,2: 1+2)
输出:
1 2
<funcion<lambda>at 0x0000000001D11e18>
3
匿名函数的综合使用:
# max sorted zip ...
list1 = [3,5,8,9,0]
m =max(list1)
print("列表中的最大值:",m)
list2 = [{'a':10,'b':20},{'a':13,'b':20},{'a':9,'b':20},{'a':29,'b':20}]
m=max(list2,key=lambda x: x['a'])
print("列表中的最大值:",m)
map函数
map函数的格式:map(函数,可迭代的参数(列表,元祖...))\
list1 = [5,6,7,4,8,9]
result=map(lambda x:x+2,list1)
print(result)
输出:
[7,8,9,6,10,11]
#for index,x in enumerate(list1)
# list[index]=x+2
#对列表中奇数进行加1操作
func = lambda x: x if x%2==0 else x+1
result = func(5)
print(result)
类似于
result=map(lambda x:x if x%2==0 else x+1,list1)
print(list(result))