函數名是一個特殊的變量,加括號就能執行函數,函數的名字,本質是變量,特殊的變量
函數名可以當做變量使,可以賦值,可以作為容器類的數據元素,可以作參數,作為函數的返回值
1.賦值
def func1():
print(666)
f = func1() #將函數名賦值給一個變量f
print(f)
2.作為容器類的數據元素
def f1():
print(111)
def f2():
print(222)
def f3():
print(333)
def f4():
print(444) #如何只調用一個將f1-f4的值全部打印出來.
l1 = [f1, f2, f3, f4] #建立一個列表將全部要調用的函數名添加進來.
for i in l1: #進行循環,
i() #i就是每一個函數名,用i()就哭直接循環調用每一個函數.!!!不能直接print,
如果是將很多個函數名添加到一個列表進行循環,然后進行調用呢?
l2 = [] #x先建一個空的列表
for i in range(1,5): #假如是要添加10個函數名
l2.append("f" + str(i))
for j in l2:
eval(j)() #eval拋開字符串的倆邊,eval()括號里要跟個要拋開的對象,而i又要調用,分開就是倆步eval(i),i()
3.函數名可以作為參數(傳參)
a = 1
def f1(x):
print(x)
f1(a) #這樣分解看,把a = 1傳參給x,,即x 的值就變成a = x =1,所以打印結果是1
def f1():
print(666)
def f2(x): # x = f1,x相當於f1
x()
f2(f1) #調用f2,把f1傳參給x,即x =f1 = 666,執行x就等於打印666
4.函數名可以作為函數的返回值
def f1():
print(666)
def f2(x):
return x
ret = f2(f1)
ret()
執行f2把f1傳給x, return x是返回,給f2(f1)這個整體,這個整體是等於f1,然后把f2(f1)賦值給ret,最后執行ret打印666