函数名也可以当做变量,

函数名是一个特殊的变量,加括号就能执行函数,函数的名字,本质是变量,特殊的变量

函数名可以当做变量使,可以赋值,可以作为容器类的数据元素,可以作参数,作为函数的返回值

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

原文地址:https://www.cnblogs.com/sunny7/p/9222503.html

时间: 2024-10-27 08:39:58

函数名也可以当做变量,的相关文章

python函数名的运用

def func(): print("呵呵") print(func) 结果: <function func at 0x1101e4ea0> 函数名是?个变量, 但它是?个特殊的变量, 与括号配合可以执?函数的变量. 当打印函数名的时候会发现出现的是一个内存地址 函数名可以赋值给变量 def func(): print("呵呵") print(func) a = func # 把函数当成?个变量赋值给另?个变量 a() # 函数调? func() 函数名

DAY11 函数进阶(函数名的本质,闭包,迭代器)

函数名的本质与一级对象: 1.函数名表示函数的内存地址. 2.函数名可以赋值给变量,可以作为容器数据类型的元素. 3.函数名可以作为参数传递给函数. 4.函数名可以作为函数的返回值. #一. 函数名表示函数的内存地址 def func(): print(111) print(func) >>><function func at 0x00000199DFD22F28> #二.函数名可以赋值给变量,可以作为容器数据类型的元素. def func(): print(111) f =

函数名传递与名称空间

1.关键字参数(了解即可)# 命名关键字参数:在函数定义阶段 写在*与**可变长参数之间的形参# 在给命名关键字参数传值的时候 只能用关键字为其传值# 在定义阶段 给你感觉好像是z是默认值参数 放在了m这个位置参数的前面了 应该报错# 其实z和m都是命名关键字参数 不是默认值参数和位置参数def func(x, y=1, *args, z=3, m, **kwargs): print(x, y) print(args) print(z, m) print(kwargs) func(1, 2, 1

函数名的使用和新版格式化输出

1. 函数名的运用 你们说一下,按照你们的理解,函数名是什么? 函数名的定义和变量的定义几乎一致,在变量的角度,函数名其实就是一个变量,具有变量的功能:可以赋值:但是作为函数名他也有特殊的功能就是加上()就会执行对应的函数,所以我们可以把函数名当做一个特殊的变量,那么接下来,我们就来研究一下这个特殊的变量. 1.1 函数的内存地址 def func(): ? print("呵呵") ?print(func)结果: <function func at 0x1101e4ea0>

函数名的本质

先来看一段函数 def alex(): prinr(123) def func()" return alex ret = func() print(ret()) 这段函数执行后的结果是这样的 123 None 这样就看结果得出来,函数名是可以当作变量使用的. 既然可以当作变量使用,那么它一定具备变量的部分特性,. 函数的本质 一,函数名是一个函数的内存地址 二,可以赋值,可以作为其他列表等容器类的元素. 三,可以作为函数的参数,返回值. 当然了,函数名的命名规则和变量名一样 一,以数字,字母,下

第十二天-函数名 迭代器

# 函数名的应用:# 函数名命名与变量相同# 函数名就是变量名,一个特殊的变量,与括号配合可以执行函数的变量,函数名存储的是函数的内存地址 # 函数名的内存地址 1 def func(): 2 print("哈哈") 3 4 print(func) # 打印结果:<function func at 0x000002BA13C199D8> 5 # 直接使用函数名得到的是函数名的内存地址 # 函数名可赋值给变量 1 def func(): 2 print("呵呵&qu

文件载入流程,函数的使用【函数名,参数【按引用赋值的问题】,函数体,【变量作用域和生命周期】】

1.求最大公约数辗转相除求值例如:12,8求最大公约数12%8=4[不为零]8%4=0[为零,则4为最大公约数][原理就是12,8的最大公约数和8,4的最大公约数一致][这个问题已经可被证明]计算机中最早的算法 2.文件载入---流程[php执行的先后顺序][php对代码的编译以文件为单位]先检查一个文件中的语法再进行编译然后才会一行行解释执行 [这一点需要注意]这里进行文件载入的流程讲解:php文件载入时,被引入的文件中的语法并不会解析,只有当该文件被执行[也就是被引入语句之后的部分才会报错]

js中变量名提升和函数名提升

首先,js中变量没有块级作用域,但是有函数作用域,即只有函数可以约数变量的作用域. 并且,函数的实质也是一个变量,所以可以改变它的值,即赋值.所以变量名提升和函数名提升非常相像. 1.变量名的提升发生在函数内部.看下面的例子.说明:第一个因为弹出undefined,相当于在上面定义了var num;因为函数内部,定义了var num=20:就相当于在一开始定义了var num;这就是变量名的提升. var num = 10; function func() { alert(num); //und

JS中函数名与变量名冲突

在JS中如果函数名与变量名冲突,JS是怎么执行的... function a(){ console.log(12); } a() var a = 10; console.log(a); JS会先把变量的声明放在最前面,然后将定义式函数放在变量声明的后面,后面赋值语句按原来的顺序I依次执行. 因此上面的代码等价于 var a; function a(){ console.log(12); } a(); a = 10; console.log(a); 因此结果是12   10.