如何消除设置标签文本功能中的多余if语句?

时间:2018-08-01 08:19:30

标签: python if-statement

我有Python函数,用于根据输入参数设置标签。有一个名为reset的参数可重置所有标签。如何摆脱多余的if not reset?应该有一个更聪明的方法...

更新: 我忘了提到一个非常重要的观点。调用此函数的方法有3种:

  1. ft = 1并重置= False,t!=无,a!=无
  2. ft!= 1并重置= False,i!=无
  3. 重置= 1

    def set_labels_text(fn,ft,t = None,a = None,i = None,reset = False):     tt =''     在=''     它=''

    if ft == 1
        if not reset:
            tt = 'bla bla 1 %s' % t
            at = 'bla bla 2 %s' % a
        get_component('template' + ft).get_component(fn + 'Label1').text = tt
        get_component('template' + ft).get_component(fn + 'Label2').text = at
    else:
        if not reset:
            it = 'bla bla 3 %s' % i
        get_component('template' + ft).get_component(fn + 'Label3').text = it
    

3 个答案:

答案 0 :(得分:3)

if not reset块移出另一个条件块又如何呢

def set_labels_text(fn, ft, t=None, a=None, i=None, reset=False):
    tt = ''
    at = ''
    it = ''

    if not reset:
        tt = 'bla bla 1 %s' % t
        at = 'bla bla 2 %s' % a
        it = 'bla bla 3 %s' % i

    if ft == 1:
        get_component('template' + ft).get_component(fn + 'Label1').text = tt
        get_component('template' + ft).get_component(fn + 'Label2').text = at
    else:
        get_component('template' + ft).get_component(fn + 'Label3').text = it

答案 1 :(得分:0)

我想我会寻求这种解决方案的!

def set_labels_text(fn, ft, t=None, a=None, i=None, reset=False):
    at = None
    it = None
    tt = None
    if reset:
        it = 'bla bla 3 %s' % i
    else:
        at = 'bla bla 2 %s' % a
        tt = 'bla bla 1 %s' % t;

    if ft == 1
        get_component('template' + ft).get_component(fn + 'Label1').text = tt or ''
        get_component('template' + ft).get_component(fn + 'Label2').text = at or ''
    else:
        get_component('template' + ft).get_component(fn + 'Label3').text = it or ''

答案 2 :(得分:0)

虽然需要多次检查x = y if condition else z的状态,但也可以使用三元条件运算符reset

def set_labels_text(fn, ft, t=None, a=None, i=None, reset=False):
    if ft == 1:
        tt = 'bla bla 1 %s' % t if not reset else ''
        at = 'bla bla 2 %s' % a if not reset else ''
        get_component('template' + ft).get_component(fn + 'Label1').text = tt
        get_component('template' + ft).get_component(fn + 'Label2').text = at
    else:
        it = 'bla bla 3 %s' % i if not reset else ''
        get_component('template' + ft).get_component(fn + 'Label3').text = it