背景介绍
在写python项目的过程中,遇到了这样的一个问题。就是自己写的自定义函数较多,如果每一个函数都用普通的调用方式,太多了。所以,最后想办法解决这个问题。想到了利用python中的eval()函数结合for循环以及列表的形式来解决这个问题。
实现代码
def noParam():
print('noparam')
def oneParam(param1):
print(param1)
def twoParam(param1, param2):
print(param1, param2)
funcList = ['noParam', 'oneParam', 'twoParam']
paramList = [[], ['1'], ['1', '2']]
for i in range(len(funcList)):
if len(str(paramList[i])[1:-1]) == 0:
eval('{}()'.format(funcList[i]))
else:
eval('{}({})'.format(funcList[i], str(paramList[i])[1:-1]))
总结
最开始一直在犹豫要不要写这个东西,因为这个东西觉得有的时候的确会用到,但是用的地方又不多。有一些鸡肋。而且这种方式适用于没有return的函数。如果有需要return,可以考虑在class中写def方法。然后利用class中的变量来储存值。当然,这并不是最棒的方法。