【发布时间】:2020-02-07 08:57:08
【问题描述】:
我一直在逐步改进调用函数的方法,其中包含字典中保存的参数列表。我的问题在于参数是命令行参数,并且函数具有不同数量的参数。如果我调用一个有 2 个参数的函数,但字典也有一个有 3 个参数的函数,那么我会在字典中的那个条目上得到一个“IndexError:list index out of range”。我的代码是
!/usr/bin/env python
from sys import argv
def func1(num1, num2):
result = int(num1) + int(num2)
print('The sum of {0} and {1} is {2}'.format(num1, num2, result))
def func2(num1, num2, num3):
result = (int(num1) + int(num2) + int(num3)) / 3
print('The average of {0} {1} and {2} is {3}'.format(num1, num2, num3, result))
def func3(string1):
reverse = string1[::-1]
print('{0} reversed is {1}'.format(string1, reverse))
def func4(*args):
pass
def func5(*args):
pass
def main():
option = {
'f1': func1(argv[2], argv[3]),
'f2': func2(argv[2], argv[3], argv[4]),
'f3': func3(argv[2])
}
if len(argv) > 1:
for routine in option:
if routine == argv[1]:
option[routine]()
exit(0)
if __name__ == '__main__':
main()
我在 linux 系统上,所以如果我执行
./program.py f1 10 11
它确实给出了预期的结果,但在提到 f2 的字典条目中抛出了说 IndexError。我可以将函数和参数的字典条目转换为字符串并使用 eval 但这显然不安全,但它确实消除了错误。所以我收集 python 正在将字典条目解释为命令并抛出错误。从上面的代码中,有没有人想办法解决这个问题?
【问题讨论】:
标签: python-3.x function dictionary arguments