如何在python中从函数中获取变量

2024-10-01 02:24:39 发布

您现在位置:Python中文网/ 问答频道 /正文

def checkQuota(candidateX_Votes, candidateX_Won):
    quota = int((validVotesCast / (seatsAvaliable + 1)) + 1)

    if candidateX_Votes < quota:
        candidateX_Won = False
        return candidateX_Won

    elif candidateX_Votes >= quota:
        candidateX_Won = True
        return candidateX_Won

我们的目标是将true或false的值设置为放入函数的变量,例如,如果我这样做checkQuota(candidateA_Votes, candidateA_Won),我应该能够稍后使用candidateA_Won,在这里它被赋值为true或false。你知道吗


Tags: falsetruereturnifdefintquotavotes
2条回答

变量candidateX_Won在函数作用域中是局部的。赋值TrueFalse时,更改的是局部变量而不是原始变量。要获得所需的结果,可以使用以下示例:

def checkQuota(candidate_x_votes):
    # here you calculate/get validVotesCast and seatsAvaliable
    quota = int((validVotesCast / (seatsAvaliable + 1)) + 1)
    return not (candidate_x_votes < quota)  # this will return True or False

# and after that you can use your function
candidateX_Votes = 12 # for example 
candidateX_Won = checkQuota(candidateX_Votes)

由于实际上不使用candidateA_Won作为参数,因此我建议您重构,只返回所需的值,并将存储在外部变量中,如下所示:

def checkQuota(candidateX_Votes): # Get rid of the parameter
    quota = int((validVotesCast / (seatsAvaliable + 1)) + 1)

    if candidateX_Votes < quota:
        candidateX_Won = False
        return candidateX_Won

    elif candidateX_Votes >= quota:
        candidateX_Won = True
        return candidateX_Won

然后,您可以使用以下函数:

candidateX_Won = checkQuota(candidateX_Votes) # Without having to pass in a variable

实际上,您甚至可以将上述函数简化为:

def checkQuota(candidateX_Votes):
    return not (candidateX_Votes < int((validVotesCast / (seatsAvaliable + 1)) + 1))

相关问题 更多 >