zoukankan      html  css  js  c++  java
  • PythonStudy——函数对象的案例

    # part1

    # 加法运算

    def add(n1, n2):
        return n1 + n2
    
    def low(n1, n2):
        return n1 - n2

    # 四则运算

    def computed(n1, n2, func):
        # if cmd == 'add':
        #     return add(n1, n2)
        # elif cmd == 'low':
        #     return n1 - n2
        return func(n1, n2)
    
    r1 = computed(10, 20, add)
    print(r1)
    r2 = computed(10, 20, low)
    print(r2)
    # part2

    def add(n1, n2):
        return n1 + n2
    
    def low(n1, n2):
        return n1 - n2
    
    def computed(n1, n2, func):
        return func(n1, n2)
    # 测试
    cmd = input('cmd: ')  # 只能等于字符串add、low => 什么方式可以将字符串add、low对应上函数
    fn = None
    if cmd == 'add':
        fn = add
    elif cmd == 'low':
        fn = low
    computed(10, 20, fn)
    # 直接输入cmd 也及时传入了一个函数对象
    # 测试
    fn_map = {
        'add': add,
        'low': low
    }
    
    if cmd in fn_map:  # 作为容器的成员可以简化判断逻辑
        fn = fn_map[cmd]
        res = computed(10, 20, fn)
        print(res)
    else:
        print('该运算暂不支持')

    # part 3

    def add(n1, n2):
        return n1 + n2
    
    def low(n1, n2):
        return n1 - n2
    
    def jump(n1, n2):
        return n1 * n2
    
    def computed(n1, n2, func):
        return func(n1, n2)
    fn_map = {
        'add': add,
        'low': low,
        'jump': jump
    }
    
    def get_fn(cmd):
        f = add  # 默认为add函数
        if cmd in fn_map:
            f = fn_map[cmd]  # 如果指令正确就返回对应的函数,如果不正确,就是采用默认的函数
        return f
    

    while True: cmd = input('cmd: ') if cmd == 'q': break if cmd in fn_map: fn = fn_map[cmd] # 通过指令找函数 res = computed(10, 20, fn) print(res) else: print('该运算暂不支持')
  • 相关阅读:
    前端工程师须知pc电脑端分辨率
    移动前端的坑
    07.01工作笔记
    缓存
    word-wrap,white-space和text-overflow属性
    页面结构
    Spring Bean的作用域和自动装配
    Spring配置文件
    初识Spring和IOC理解
    MyBatis缓存
  • 原文地址:https://www.cnblogs.com/tingguoguoyo/p/10779408.html
Copyright © 2011-2022 走看看