8. Python开发--函数对象

来源:互联网 发布:excel2003 重复数据 编辑:程序博客网 时间:2024/06/15 12:17

#!/usr/bin/python
# -*- coding:utf-8 -*-
"""
  一:函数对象:函数是第一类对象,即函数可以当作数据传递
    1 可以被引用
    2 可以当作参数传递
    3 返回值可以是函数
    4 可以当作容器类型的元素
"""

# 1 引用
def foo():
    print('from foo')

func=foo
print(foo)
print(func)
func()

# 2 当作参数传递
def foo():
    print('from foo')

def bar(func):
    print(func)
    func()

bar(foo)

# 3 返回值可以是函数
def foo():
    print('from foo')

def bar(func):
    return func

f=bar(foo)
print(f)
f()

# 4 可以当作容器类型的元素
def foo():
    print('from foo')
dic={'func':foo}
print(dic['func'])
dic['func']()

# 应用

def select(sql):
    print('========>select')

def insert(sql):
    print('========>add')

def delete(sql):
    print('=======>delete')

def update(sql):
    print('-=---->update')

func_dic={
    'select':select,
    'update':update,
    'insert':insert,
    'delete':delete
}

def main():
    while True:
        sql = input('>>: ').strip()
        if not sql:continue
        l = sql.split()
        cmd=l[0]
        if cmd in func_dic:
            func_dic[cmd](l)

main()

# 下面是对上面的main函数的另一种写法,这种方式就显的代码冗余,不如上面的方式简洁
# def main():
#    sql = input('>>: ')
#    l = sql.split()
#    print(l)
#    if l[0] == 'select':
#        select(l)
#    elif l[0] == 'insert':
#        insert(l)
#    elif l[0] == 'delete':
#        delete(l)
#    elif l[0] == 'update':
#        update(l)
原创粉丝点击