我向一个函数发送了3个值,但在函数之后,我只想再次测试第3个函数返回.我该怎么做


rows = 22
rowsMax = 21
columns = 117
columnMax = 117
status = "True"
def DrawBoard (rows,columns,status):
if rows > rowsMax or columns > columnMax:
status = "False"
rows = 0
columns = 0
return rows,columns,status

DrawBoard(rows,columns,status)

# I want to test only the status returns from the function but get error
# DrawBoard() missing 2 required positional arguments: 'columns' and 'status'.
if DrawBoard(status) == "False":
print("Either the row and columns maximum were excepted")

如果您编写的DrawBoard(.., .., ..)是一个函数调用,那么您正在调用该函数,它会返回其返回值。要保存这些值,您可以执行

ret1, ret2, ret3 = DrawBoard(rows, columns, status)

现在检查的第三个值

if ret3 == False:

您也可以直接访问第三个返回值,而无需将它们存储在具有DrawBoard(rows, columns, status)[2]的变量中。

推送到对象版本:

class Board:
def __init__(self, rows, rowsMax, columns, columnMax):
self.rows = rows
self.rowsMax = rowsMax
self.columns = columns
self.columnMax = columnMax
self.status = True
def drawBoard(self):
msgError = 'Either the row and columns maximum were excepted'
if self.rows > self.rowsMax or self.columns > self.columnMax:
self.status = False
self.rows = 0
self.columns = 0
else:
msgError = 'All fine!'
return msgError

if __name__ == '__main__':
newBoard = Board(22, 21, 117, 117)
print(newBoard.drawBoard())  # Either the row and columns maximum were excepted
print(newBoard.status)  # False
newBoard = Board(20, 21, 117, 117)
print(newBoard.drawBoard())  # All fine!
print(newBoard.status)  # True

访问状态就像self.status在类中为True或False,或者使用带有newBoard.status的对象一样简单。。。

最新更新