【发布时间】:2021-12-30 01:31:39
【问题描述】:
我制作了一个带有 3 个单独参数的嵌套函数 - 每个函数都带有一个:(arg1)(operation)(arg2)
def simple_functional_calc(arg1: int):
def inner_functional_calc(operation: str):
import operator
ops = {
'+': operator.add,
'-': operator.sub
}
def inner_inner_functional_calc(arg2: int):
return ops[operation](arg1, arg2)
return inner_inner_functional_calc
return inner_functional_calc
还有其他想法(没有导入):
def calculator(arg1: int):
def inner_calc(operation: str):
def add(arg2: int):
return arg1 + arg2
def sub(arg2: int):
return arg1 - arg2
if operation == '+':
return add
elif operation == '-':
return sub
return inner_calc
在此示例中,print(calculator(1)('+')(7)) 的结果为 8。问题是使函数可以接受任意数量的参数并在最后一个参数为“=”时返回结果。示例:print(calculator(2)('+')('5')('-')(3)('-')(1)('=')) 结果为 3。有什么提示吗? (如果可能的话,我宁愿不使用任何导入和全局变量!)
【问题讨论】:
-
你可以使用
def func(*arg)这样func可以接受可变数量的参数,这些参数将作为一个元组保存在arg中。您可以使用len(arg)在 func 中查看 args 编号,并将它们作为普通元组访问。 -
但参数必须按照我写的特定顺序传递: print(calculator(2)('+')('5')('-')(3)('-' )(1)('='))
标签: python function recursion calculator nested-function