Execute function only if a variable is True
Become part of the top 3% of the developers by applying to Toptal https://topt.al/25cXVn
--
Music by Eric Matyas
https://www.soundimage.org
Track title: Puzzle Game Looping
--
Chapters
00:00 Question
01:06 Accepted answer (Score 8)
01:32 Answer 2 (Score 2)
01:59 Answer 3 (Score 0)
02:38 Thank you
--
Full question
https://stackoverflow.com/questions/2945...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#python #methods #idioms
#avk47
--
Music by Eric Matyas
https://www.soundimage.org
Track title: Puzzle Game Looping
--
Chapters
00:00 Question
01:06 Accepted answer (Score 8)
01:32 Answer 2 (Score 2)
01:59 Answer 3 (Score 0)
02:38 Thank you
--
Full question
https://stackoverflow.com/questions/2945...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#python #methods #idioms
#avk47
ACCEPTED ANSWER
Score 8
Like this?
def foo():
print('foo')
>>> bool = True
>>> if bool: foo()
foo
>>> bool = False
>>> if bool: foo()
If the above isn't suitable, I don't think it's clear what you'd like to do or why something like this wouldn't work:
def foo():
if not var:
return
ANSWER 2
Score 2
Depending on where and how var is declared, you may be able to write a decorator, which will allow you to have a syntax like that:
@if_true(var)
def foo():
# body of the function
However, this isn't by any means more idiomatic than a simple if check in the body of the function, which you (for some reason) don't want.
ANSWER 3
Score 0
You could use the short circuit behavior of a boolean operation to accomplish the task but it is not clear that is what you are after.
# 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
>>>