函数名及第一类对象

1.查看函数的内存地址
def func():
    print(1)
print(func)  #<function func at 0x0000000000681E18>(函数的内存地址)
2.函数名当做值赋给变量
def func():
    print(1)
a = func          #将func当做值赋值给变量a
print(func())
print(a)
结果:
1
None
<function func at 0x00000000004F1E18>
3.函数名可以当做参数去传递给函数
def func():
    print(1)
    return "努力学习python" #返回给func()
def func2(msg):        #努力学习python == msg
    print(msg)
func2(func())         #将return返回值 返回给func(),然后又将func()当作参数传递给func2()中的msg
# 结果:
1
努力学习python
4.函数名可以当作返回值被返回
def foo():
    print(2)        # 当函数没有写return默认返回None
def func(msg):
    print(1)
    return msg()    ###msg指的是foo的内存地址  msg()指的调用函数    # 容易犯的错误
print(func(foo))        # 函数名可以当做返回值被返回
结果:
1
2
None
5.函数名可以当做元素存放在一个容器中
def foo():
    print(1)
    return "猪蹄"
def func():
    print(2)
    ret = foo()
    return ret
def func1():
    print(3)
    msg = func()    #函数名可以当做元素存放在一个容器中
    return msg
print(func1())   #接力  (接力:第二个函数的return返回值是第一个函数的函数名)
总结:
1.函数名可以直接查找内存地址
2.函数名可以当做值赋值给变量
3.函数名可以作为参数进行传递给函数
4.函数名当做返回值,返回值加括号 接力的时候要一层一层往下传
5.函数名可以当做元素存放到一个容器中





原文地址:https://www.cnblogs.com/shicongcong0910/p/10260228.html