• 函数的对象


    函数是第一类对象

    1、函数名是可以被引用的:

    name = "zc"

    dsb = name

    所以name是先定义的,zc是先赋值给name的,然后再定义dsb,然后再引用第一个定义的name.

    def index():
    print('from index')
    a = index
    a()
    第二种方式:读法是先定义一个index,然后是a = index,调用函数名,可以直接调用,方便简单。

    2、函数名可以当做参数传递
    def foo(x,y,func):
    print(x,y)
    func()

    def bar():
    print("from bar")
    foo(1,2,bar)
    读法是这样的:
    第一步:定义def foo(x,y,func)
    第二步:定义def bar()
    第三步:调用foo(1,2,bar),bar = func 1,2就是位置参数
    第四步:print(1,2) func(), 而func()其实就是bar()
    第五步:就是执行bar这个函数。
    运行结果就是:

    1 2
    from bar

    3 函数名可以当做返回值使用

    传参的时候没有特殊需求,一定不要加括号,加括号当场执行了

    def index()

    print("from index")

    def func(a)

    return a

    a = func(index)

    print(a)

    a() 

    读法:

    第一步:定义一个函数index()

    第二步:再定义一个函数func(a)

    第三步:赋值 a = fun(index),   index 赋值给 a,就是a = fun(a)

    第四步:执行print(index(a))  打印 index(a)的地址

    第五步:a()其实就是调用index(),执行这个函数,就是print(“from index”)

    运行结果就是:

    第一行是index(a)的地址:<function index at 0x0000018CED152318>

    第二行是执行a(),也就是执行index(),这是什么意思呢?也就是看执行第一行代码了,

    func(index) 这是一个调用的函数,返回的是一个值,index赋值给a, a=index,然后往下执行,值就是index,return(a),就是返回a,然后返回的值就是index。然后就是执行index()这条语句了。

    def func():                #定义一个函数
    print("from func") #函数体

    l1 = [1,"2",func,func()] #做一个l1的容器类型,第三个元素是func,第四个元素执行func()函数。所以他是先执行func()函数语句,怎样执行呢?直接调用func()语句,打印print("from func")
    f = l1[2] #然后执行第二点,f= func 这个值,是函数名
    print(f)

     读法:

    第一步:先定义一个函数

    第二步:立即执行调用func函数里面的内容,print("from func"),打印出来就是from func

    第三步:就是列表中第二个元素赋值给f,然后print(f),就是print   f 对应的地址。列表元素不是直接存在列表范围内的,而是以地址的形式保存在列表中。


    这边还有一个函数代码如下:

    def register():
    print("register")

    def login():
    print("login")

    def shopping():
    print("shopping")

    def pay():
    print("pay")

    func_dic = {"1":register,"2":login,"3":shopping,"4":pay}

    def main():
    while True:
    print("""
    1、注册
    2、登陆
    3、购物
    4、付款
    5、退出
    """)
    choice = input("请输入对应的编号:").strip()
    if choice == "5":
    break
    if choice not in func_dic:
    continue
    else:
    func_dic[choice]()
    main()
  • 相关阅读:
    測试AtomicInteger与普通int值在多线程下的递增操作
    《漫画线性代数》读书笔记 矩阵
    Android下雪动画的实现
    Live555实战之交叉编译live555共享库
    JAVA_SE基础——24.面向对象的内存分析
    Linux下利用signal函数处理ctrl+c等信号
    tomcat6url请求400错误(%2F与%5C)
    python的交互式shell-ipython体验
    1906月读书清单
    Linux对变量的截取替换
  • 原文地址:https://www.cnblogs.com/medigrat/p/11837563.html
Copyright © 2020-2023  润新知