仅当变量为 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
>>>