3 回答
TA贡献1796条经验 获得超4个赞
要在 Python 中创建函数,请使用 lambda 函数或常规函数定义。例子分别是:
def divide(meters_input):
return meters_input / 0.3048
或者
divide = lambda meters_input: meters_input / 0.3048
一般来说,常规函数定义是首选,因为它提高了可读性。您可以按如下方式定义函数映射:
def my_formulas(i):
switcher={
0:divide # do not write divide()
}
TA贡献1866条经验 获得超5个赞
如果这些总是简单的函数,您可以lambda为此使用表达式:
def my_formulas(i):
switcher= {
0:lambda meters_input: meters_input/0.3048
}
return switcher.get(i,"Invalid formula")
my_formulas(0)(27) #88.58267716535433
如果您的函数查找始终是从零开始的数字,则最好将函数存储为数组。你也可以做这样的事情:
def my_formulas(index):
def meters2Feet(meters):
return meters/0.3048
def hours2Minutes(hours):
return hours * 60
def invalid(*args):
return "Invalid formula"
lookup = [
meters2Feet,
meters2Feet
]
if index >= len(lookup):
return invalid
return lookup[index]
my_formulas(0)(27) # 88.58267716535433
它有点复杂,但可能更容易阅读和理解。
TA贡献1883条经验 获得超3个赞
尝试将您的功能更改为:
def my_formulas(i):
switcher = (i/0.3048)
return switcher
函数中的“i”是函数的局部变量。在您的代码中,您将 0 传递给 my_formulas() 函数。i 然后变为 0,但 meter_input 超出了该函数的范围。
添加回答
举报