在函数之外使用局部变量

3

我知道函数对于需要重复使用的代码非常有用,因此我尝试创建一个函数来节省时间并使我的代码看起来更整洁。我创建的函数如下:

def drawCard():
    drawnCard = random.choice(cardDeck)
    adPos = cardDeck.index(drawnCard)
    drawnCardValue = cardValues[adPos]

然而,我不确定如何返回这些变量,因为它们是局部的。因此,在函数外部无法使用这些变量。我想知道是否有人能帮助修改这个函数,使我能够在函数外部使用drawnCard和drawnCardValue变量?


return - arshajii
1个回答

3

Use return:

def drawCard():
    drawnCard = random.choice(cardDeck)
    adPos = cardDeck.index(drawnCard)
    drawnCardValue = cardValues[adPos]
    return drawnCard, drawnCardValue

drawnCard, drawnCardValue = drawnCard()

请注意,您也可以这样编写drawCard函数:
def drawCard():
    adPos = random.randrange(len(cardDeck))
    drawnCard = cardDeck[adPos]
    drawnCardValue = cardValues[adPos]
    return drawnCard, drawnCardValue

这两个函数在cardDeck包含重复值时的行为是不同的。cardDeck.index总是返回第一个索引,因此drawnCardValue总是对应于第一个重复项。它永远不会返回第二个值(理论上可能不同)。
如果使用adPos = random.randrange(len(cardDeck)),则假定len(cardValue) == len(cardDeck),则cardValue中的每个项都有相等的被选中的机会。

感谢您提供详细的答案! - user3449872

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接