1

我是一个初学者,正在编写 Python Blackjack 脚本,并且对函数 (dealPlayer) 是否需要参数感到困惑。不管有没有参数,它都可以工作。我不确定我是不是脑子里放了个屁,或者我在这个过程中没有学到任何东西。这是代码:

import random

dealer = []
player = []
c = ""
deck = [2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,
            9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,11]

def dealPlayer(deck):
    cardOne = random.choice(deck)
    cardTwo = random.choice(deck)
    player.append(cardOne)
    player.append(cardTwo)
    deck.remove(cardOne)
    deck.remove(cardTwo)

问题是,我需要 (deck) 作为函数中的参数吗?它可以使用或不使用 (deck) 作为参数。我已经回顾了不同的教程和其他代码,但我仍然感到困惑。谢谢你的帮助。

4

2 回答 2

3

您的代码使用或不deck使用参数的原因是因为有一个名为 的全局变量deck,因此当您deck在函数内部引用时,该函数将首先查找局部变量(参数),然后如果没有找到它,它将寻找全局变量。

最好将代码重构为根本不使用全局变量——deck最初在函数内部定义,然后根据需要将其作为结果或参数传递给其他函数。如果您不想这样做,那么至少要确保您的参数不会影响全局变量(与全局变量具有相同的名称),以避免进一步混淆。或者完全删除参数并仅使用全局变量,如果这适合您的程序。

于 2013-02-21T22:40:37.543 回答
1

如果您的功能是:我说对了吗?

def dealPlayer():

代码仍然有效吗?这应该会引发未定义的甲板错误。编辑:这当然是错误的,它是全球性的。没有它就可以工作。但这是一个不好的做法。

def dealPlayer():
    deck = []

这应该引发索引错误。

cardOne = random.choice()

这会引发 TypeError。

于 2013-02-21T22:41:13.753 回答