如何调用多个退货之一?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何调用多个退货之一?相关的知识,希望对你有一定的参考价值。
def sudoku_solver(sudoku):
l = [0, 0]
if not find_empty_location(sudoku, l):
return True
row = l[0]
col = l[1]
for num in range(1, 10):
if check_location_is_safe(sudoku, row, col, num):
sudoku[row][col] = num
if sudoku_solver(sudoku):
return True,sudoku
sudoku[row][col] = 0
return False
def P():
a = np.zeros((9,9))
if sudoku_solver(sudoku):
a = sudoku_solver(sudoku)[1]
else:
a = 1
return a
有两个回报,True
和sudoku
。我怎样才能在函数P中调用sudoku
?当我运行P()
函数时,它将显示'bool' object is not subscriptable
。
您可以使函数返回单个值,该值可以是None或数独数据。
Python将None视为false,因此您的条件可能是:
...
if sudoku_solver(sudoku):
a = sudoku_solver(sudoku)
...
请注意,如果sudoku_solver()是一个复杂且耗时的函数,您将需要在测试条件之前将其结果放在变量中,以便它不会执行两次(如上述条件中的情况)
...
a = sudoku_solver(sudoku)
if a:
...
另一种选择是系统地返回带有布尔值和数据数据(或无)的元组。
您的退货声明必须更改为return True,sudoku
和return False,None
那你的条件可以直接使用索引:
...
if sudoku_solver(sudoku)[0]:
a = sudoku_solver(sudoku)[1]
...
但同样,你可能不想两次执行该函数:
...
ok,a = sudoku_solver(sudoku)
if ok :
...
另一件事是,如果你将sudoku作为参数传递,你必须意识到你的函数将修改调用变量的内容,即使它返回False。这可能不是你想要的,但如果是,那么返回第二个值是没有意义的,因为调用者的sudoku变量实例已经被修改并且可用。
当你看到
return True,sudoku
你可以像这样捕获返回的值
result, sudoku = my_function()
或者如果你对结果没兴趣
_, sudoku = my_function()
- -编辑 - -
看来你的问题围绕两个回报。亦即
return True,sudoku
与
return False
这增加了不必要的复杂性。我可以建议你简化使用
return sudoku
然后是
return None
这意味着您可以像这样检查返回的值
sudoku = my_function()
if (sudoku):
// Do something here
else:
// Do something else
您不能从函数返回多个对象,但可以返回包含多个成员对象的容器对象,例如列表或元组。尝试使用
return [ True, sudoku ]
以上是关于如何调用多个退货之一?的主要内容,如果未能解决你的问题,请参考以下文章
在不存在的片段上调用片段生命周期和 onCreate 的问题
JUC并发编程 共享模式之工具 JUC CountdownLatch(倒计时锁) -- CountdownLatch应用(等待多个线程准备完毕( 可以覆盖上次的打印内)等待多个远程调用结束)(代码片段