我有Python函数,用于根据输入参数设置标签。有一个名为reset
的参数可重置所有标签。如何摆脱多余的if not reset
?应该有一个更聪明的方法...
更新: 我忘了提到一个非常重要的观点。调用此函数的方法有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
答案 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