Python 参数混淆

标签 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)作为参数吗?它可以使用或不使用 (deck) 作为参数。我已经回顾了不同的教程和其他人的代码,但我仍然感到困惑。感谢您的帮助。

最佳答案

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

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

关于Python 参数混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15013537/

相关文章:

php - 如何在 PHP 中获取 MySQL 函数的参数

python - 为什么 Python 中一个变量可以全局访问,而另一个则不能?

python - 从列名称列表中切片并通过将另一个列表指定为这些列中的名称来重命名它们

java - Android 上设置参数后启动相机失败

javascript - ASP.NET 将 gridview 单元格值传递给 javascript

python - 如何使用 Pandas 获取表格中的单个单元格?

c - 在函数内部修改参数 'passed by value' 并将它们用作局部变量

python - SQLAlchemy 和 sqlite 的嵌套事务

python - 从多维数组中选择一些维度

python - 使用 Code::Blocks 构建 OpenCV.cbp 时出现 Python.h 问题