# Driving Python function execution from a text file.
# Author: Vasudev Ram:
# https://vasudevram.github.io,
# http://jugad2.blogspot.com
# Copyright 2016 Vasudev Ram
def square(n): return n * n
def cube(n): return n * square(n)
def fourth(n): return square(square(n))
# 1) Define the fns dict literally ...
#fns = {'square': square, 'cube': cube, 'fourth': fourth}
# 2a) ... or programmatically with a dict comprehension ...
fns = { fn.func_name : fn for fn in (square, cube, fourth) }
# OR:
# 2b)
# fns = { fn.__name__ : fn for fn in (square, cube, fourth) }
# The latter approach (2a or 2b) scales better with more functions,
# and reduces the chance of typos in the function names.
with open('functions.txt') as fil:
for line in fil:
print
line = line[:-1]
if line.lower() not in fns:
print "Skipping invalid function name:", line
continue
for item in range(1, 5):
print 'item: ' + str(item) + ' : ' + line + \
'(' + str(item) + ') : ' + str(fns[line](item)).rjust(3)