Python参数混乱

时间:2013-02-21 22:35:04

标签: python parameters

我是初学者,编写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)作为参数。我已经回过头来看了不同的教程和其他代码,但我仍然感到困惑。谢谢你的帮助。

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

如果你的职能是:

,我能帮到你
def dealPlayer():

代码仍然有效?这应该引发一个未定义的卡座错误。编辑:这当然是错误的全球性。没有它就行不通。但那是一种不好的做法。

def dealPlayer():
    deck = []

这应该引发索引错误。

cardOne = random.choice()

这会引发TypeError。