仅当变量为 True 时才执行函数
Execute function only if a variable is True
我想 运行 一个仅当语句为真时的函数。
例如,我有:
def foo():
# do something
我想 运行 只有在
var == True
在密钥处理程序中,我不想做这样的事情:
if k.key() == Key_UP and var:
foo()
我从多个地方调用这个函数,我不想重复 var 条件。
另外,我不想要这样的东西:
def foo():
if var:
# do something
我展示的最后一个最接近我的需要,但我仍然认为它可以通过其他方式完成。 Python 3.
的惯用语
您好!
PS。我想得到这样的东西:
def foo() if var == True:
# do something
像这样?
def foo():
print('foo')
>>> bool = True
>>> if bool: foo()
foo
>>> bool = False
>>> if bool: foo()
如果以上不合适,我认为您不清楚您想做什么或为什么这样的事情行不通:
def foo():
if not var:
return
根据声明 var
的位置和方式,您可以编写一个装饰器,这样您就可以使用如下语法:
@if_true(var)
def foo():
# body of the function
但是,这并不比简单的 if
检查函数体更符合习惯,您(出于某种原因)不想要它。
您可以使用布尔运算的短路 行为来完成任务,但不清楚您想要的是什么。
# bit of setup
class K:
def __init__(self, key):
self._key = key
def key(self):
return self._key
def foo():
print('\tfoo running')
return 'foo!'
var = [True, False]
k = K(True)
m = K(False)
for thing in (k, m):
for b in var:
print('thing.key():{} - var:{}'.format(thing.key(), b))
if thing.key():
result = b and foo()
print('\t', result)
>>>
thing.key():True - var:True
foo running
foo!
thing.key():True - var:False
False
thing.key():False - var:True
thing.key():False - var:False
>>>
我想 运行 一个仅当语句为真时的函数。 例如,我有:
def foo():
# do something
我想 运行 只有在
var == True
在密钥处理程序中,我不想做这样的事情:
if k.key() == Key_UP and var:
foo()
我从多个地方调用这个函数,我不想重复 var 条件。 另外,我不想要这样的东西:
def foo():
if var:
# do something
我展示的最后一个最接近我的需要,但我仍然认为它可以通过其他方式完成。 Python 3.
的惯用语您好!
PS。我想得到这样的东西:
def foo() if var == True:
# do something
像这样?
def foo():
print('foo')
>>> bool = True
>>> if bool: foo()
foo
>>> bool = False
>>> if bool: foo()
如果以上不合适,我认为您不清楚您想做什么或为什么这样的事情行不通:
def foo():
if not var:
return
根据声明 var
的位置和方式,您可以编写一个装饰器,这样您就可以使用如下语法:
@if_true(var)
def foo():
# body of the function
但是,这并不比简单的 if
检查函数体更符合习惯,您(出于某种原因)不想要它。
您可以使用布尔运算的短路 行为来完成任务,但不清楚您想要的是什么。
# bit of setup
class K:
def __init__(self, key):
self._key = key
def key(self):
return self._key
def foo():
print('\tfoo running')
return 'foo!'
var = [True, False]
k = K(True)
m = K(False)
for thing in (k, m):
for b in var:
print('thing.key():{} - var:{}'.format(thing.key(), b))
if thing.key():
result = b and foo()
print('\t', result)
>>>
thing.key():True - var:True
foo running
foo!
thing.key():True - var:False
False
thing.key():False - var:True
thing.key():False - var:False
>>>