一幻梯、匿名函數(shù):lambda
函數(shù)名 = lambda 參數(shù): 表達式
1、有名函數(shù)
def f2(a, b):
return a + b
print(f2(2, 4)) # 6
2滴某、匿名函數(shù)lambda
- [ ] 匿名函數(shù)想要自執(zhí)行:函數(shù)名()
f2 = lambda a,b: a + b
print(f2(2, 4)) #6
- [ ] 函數(shù)名 = lambda 參數(shù):表達式
li = [1, 4, 69, 378, 96]
print(list(filter(lambda x: x > 80, li))) #[378, 96]
- [ ] 把lambda函數(shù)當做參數(shù)傳入霜瘪,這樣可以實現(xiàn)不同方法
def f2(a, b, func):
result = func(a, b)
return result
num1 = f2(99, 9, lambda x, y: x + y)
num2 = f2(99, 9, lambda x, y: x - y)
print(num1) # 108
print(num2) # 90
- [ ] 實現(xiàn)輸入函數(shù)的循環(huán)執(zhí)行
def f2(a, b, func):
result = func(a, b)
return result
while True:
flag = input("還要繼續(xù)輸入嗎:yes or no ?")
if flag == "yes":
func = input("請輸入一個匿名函數(shù):")
func = eval(func) # eval讓輸入的字符串去執(zhí)行
num = f2(11, 33, func)
print(num)
else:
print("結(jié)束執(zhí)行")
break
運行結(jié)果:
二碟刺、函數(shù)的作用域:變量的作用范圍
1、使用函數(shù)內(nèi)部定義的變量
num = 100 #全局變量--全局作用域
def f():
num = 200
print(num)
f() # 200
print(num) # 100
2薯酝、注釋函數(shù)內(nèi)部變量后,使用的是函數(shù)外定義的變量
num = 100
def f():
#num = 200 #局部變量爽柒,只在函數(shù)內(nèi)生效吴菠,函數(shù)外無法拿到---局部作用域
print(num)
f() # 100
3、global函數(shù):在函數(shù)內(nèi)部定義全局變量
- [ ] 使用global函數(shù)前:
num = 100 #全局變量——全局作用域
def f1():
num = 200
print(num)
f1() # 200
print(num) # 100
- [ ] 使用global函數(shù)后:
num = 100 #全局變量——全局作用域
def f1():
global num # 修改全局變量
num = 200
print(num)
f1() # 200
print(num) # 200
4浩村、nonlocal:若是函數(shù)套嵌做葵,內(nèi)層函數(shù)想拿到外層函數(shù)的值,則用到nonlocal
- [ ] 若返回的是:f2()
def f1():
num = 1
def f2():
nonlocal num
num += 1
return num
return f2()
num = f1()
print(num) # 2
- [ ] 若返回的是:f2
def f1():
num = 1
def f2():
nonlocal num
num += 1
return num
return f2
num = f1()
print(num()) # 2
5心墅、總結(jié)
1酿矢、函數(shù)內(nèi)部定義的變量是局部變量,其作用域是局部作用域怎燥,函數(shù)外無法調(diào)用
2瘫筐、函數(shù)外定義的變量是全局變量,其作用域為全局作用域铐姚,如果你想要在函數(shù)內(nèi)修改全局變量,需要加“global 變量名”