In python I have many functions likes the ones below. I would like to run all the functions whose name matches setup_*
without having to explicitly call them from main. The order in which the functions are run is not important. How can I do this in python?
def setup_1():
....
def setup_2():
....
def setup_3():
...
...
if __name__ == '__main__':
setup_*()
def setup_1():
print('1')
def setup_2():
print('2')
def setup_3():
print('3')
if __name__ == '__main__':
for func in (val for key,val in vars().items()
if key.startswith('setup_')):
func()
yields
# 1
# 3
# 2
Here is one possible solution:
import types
def setup_1():
print "setup_1"
def setup_2():
print "setup_2"
def setup_3():
print "setup_3"
if __name__ == '__main__':
for name, member in globals().items(): # NB: not iteritems()
if isinstance(member, types.FunctionType) and name.startswith("setup_"):
member()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With