函数名也可以当做变量,
函数名是一个特殊的变量,加括号就能执行函数,函数的名字,本质是变量,特殊的变量
函数名可以当做变量使,可以赋值,可以作为容器类的数据元素,可以作参数,作为函数的返回值
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