Python-如何对函数调用进行操作?
Python-How to perform operation on a function call?
我正在构建一个使用我已经定义的另一个函数的函数。第一个完成的函数是 get_value_at_location,它告诉我列表中位置(元组)的值(拼图。)
这是该函数的代码:
def get_value_at_location(puzzle,loc):
val_loc= puzzle[loc[0]][loc[1]]
return val_loc
现在我正在尝试构建一个名为 is_valid_solution 的函数,它接受参数 puzzle (given list,) op (operation to be done ex: + - *,) expected total (outcome we want, ) 和位置(元组)来确定操作是否产生预期结果,然后 returns True 或 False。
这是我得到的代码,所以你可以看看我在想什么:
def is_valid_solution(puzzle, op, expected_total, locations):
loc=location
if (get_value_at_location(puzzle,loc)) +(op) ==expected_total:
return True
else:
return False
示例input/output:
([[1]], '+', 1, [(0,0)]) → True
([[1,2],[2,1]], '-', 1, [(0,0),(1,0)]) → True
([[1,2],[2,1]], '+', 4, [(0,0),(0,1)]) → False
这显然是正确的,我只是不知道如何做我想做的事?我该如何实施?
选项 A
与其尝试使用 "+"
或 "*"
作为字符串,不如使用 operator
模块。
> import operator
> operator.add(2, 3)
5
> operator.mul(2, 3)
6
您可以将 operator.add
作为 op
参数传递,然后调用您的函数:
def apply(a, b, op):
return op(a, b)
apply(2, 3, operator.add) # 5
选项 B
使用if
按字符串名称选择操作:
def apply(a, b, op):
if op == '+':
return a + b
if op == '*':
return a * b
apply(2, 3, '*') # 6
我正在构建一个使用我已经定义的另一个函数的函数。第一个完成的函数是 get_value_at_location,它告诉我列表中位置(元组)的值(拼图。)
这是该函数的代码:
def get_value_at_location(puzzle,loc):
val_loc= puzzle[loc[0]][loc[1]]
return val_loc
现在我正在尝试构建一个名为 is_valid_solution 的函数,它接受参数 puzzle (given list,) op (operation to be done ex: + - *,) expected total (outcome we want, ) 和位置(元组)来确定操作是否产生预期结果,然后 returns True 或 False。
这是我得到的代码,所以你可以看看我在想什么:
def is_valid_solution(puzzle, op, expected_total, locations):
loc=location
if (get_value_at_location(puzzle,loc)) +(op) ==expected_total:
return True
else:
return False
示例input/output:
([[1]], '+', 1, [(0,0)]) → True
([[1,2],[2,1]], '-', 1, [(0,0),(1,0)]) → True
([[1,2],[2,1]], '+', 4, [(0,0),(0,1)]) → False
这显然是正确的,我只是不知道如何做我想做的事?我该如何实施?
选项 A
与其尝试使用 "+"
或 "*"
作为字符串,不如使用 operator
模块。
> import operator
> operator.add(2, 3)
5
> operator.mul(2, 3)
6
您可以将 operator.add
作为 op
参数传递,然后调用您的函数:
def apply(a, b, op):
return op(a, b)
apply(2, 3, operator.add) # 5
选项 B
使用if
按字符串名称选择操作:
def apply(a, b, op):
if op == '+':
return a + b
if op == '*':
return a * b
apply(2, 3, '*') # 6