我是 python 的新手,无法理解这里出了什么问题。
将此函数放入 python shell 中:
def add1(x):
x += 1
当我设置 p = 0 并调用
add1(p)
我仍然得到 p = 0。给了什么?
最终,我试图制作一个“交易”功能,将两张随机牌添加到手牌中。我会用 deal(player1_hand) 来调用它吗?
请您参考如下方法:
您在这里缺少的是了解变量的范围。在 Python 中(就像在大多数编程语言中一样),进入一个函数意味着您正在进入一个新的范围,其中只有函数的参数以及任何全局变量可用。
离开函数时,这个作用域(以及对该作用域中的变量所做的任何更改)都会消失。这就是你得到这个的原因:
def add1(x):
x += 1
p = 0
add1(p)
print(p)
仍将显示 0。
这里最好和最干净的选择是让你的函数返回新值。这样,该函数就是所谓的“纯”函数,因为它仅对其参数进行操作,并产生一个新值,而不依赖于或影响全局范围:
def add1(x):
return x + 1
p = 0
p = add1(p)
print(p)
更多信息,您可以阅读https://python-textbok.readthedocs.io/en/1.0/Variables_and_Scope.html#variable-scope-and-lifetime
希望这对您有所帮助!
