Python 数组函数特殊写法

最近在氪码的过程中遇到一个很有意思的函数写法:

前提,有如下7个函数:

1.cut_left_phoning

2.cut_right_phoning

3.cut_drinking

4.cut_smoking

5.cut_bigcut

6.cut_left_eyes

7.cut_right_eyes

现有如下需求:

判断action_num值.

当值为1时,执行函数cut_left_phoning

当值为2时,执行函数cut_right_phoning

当值为3时,执行函数cut_drinking

当值为4时,执行函数cut_smoking

当值为5时,执行函数cut_bigcut

当值为6时,执行函数cut_left_eyes

当值为7时,执行函数cut_right_eyes

遇到这种情况时,我们通常的操作方法是:

if action_num == 1:
    cut_left_phoning(image_name, img, output_path, size, box, landmarks)
elif action_num == 2:
    cut_right_phoning(image_name, img, output_path, size, box, landmarks)
elif action_num == 3:
    cut_drinking(image_name, img, output_path, size, box, landmarks)
elif action_num == 4:
    cut_smoking(image_name, img, output_path, size, box, landmarks)
elif action_num == 5:
    cut_bigcut(image_name, img, output_path, size, box, landmarks)
elif action_num == 6:
    cut_eyes(image_name, img, output_path, size, box, landmarks)
elif action_num == 7:
    cut_eyes(image_name, img, output_path, size, box, landmarks)

 使用多个if判断action_num的值然后再执行函数。

但是现在有个一个更简单的办法:

CUT_FUNCTIONS = [None, cut_left_phoning, cut_right_phoning, cut_drinking, cut_smoking, cut_bigcut, cut_left_eyes, cut_right_eyes]
CUT_FUNCTIONS[action_num](image_name, img, output_path, size, box, landmarks)

 将7个函数存储为一个列表,然后直接判断action_num在列表中映射的函数执行相关函数。

此方法要求:

1. 子函数已经具备

2.子函数的参数完全相同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值