gpt4 book ai didi

python - 变量作用域(Python 新手)

转载 作者:行者123 更新时间:2023-11-28 20:06:32 26 4
gpt4 key购买 nike

我在功能 block 内的全局列表上使用 .pop 方法,但全局列表正在 block 外更新。我以为局部变量不能修改全局变量。

这不应该起作用,但它确实起作用了:

import random

PhraseBank = ['a','b','c','d']

def getPuzzle(secretphrase):
phraseIndex = random.randint(0,len(PhraseBank)-1)
secretphrase = PhraseBank.pop(phraseIndex)
return secretphrase #Returns and item indexed from the PhraseBank

while len(PhraseBank) != 0:
secretphrase = getPuzzle(PhraseBank) #works
print(secretphrase, PhraseBank)

输出是:

a ['b', 'c', 'd']
d ['b', 'c']
c ['b']
b []

当我只在功能 block 内修改 PhraseBank 时,为什么 PhraseBank 得到全局更新?

最佳答案

列表是可变的。您正在更改 PhraseBank 引用的列表,但它仍然引用同一个列表。所以变量没有改变(仍然指的是同一个东西)但是那个东西已经改变了。

关于python - 变量作用域(Python 新手),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22097643/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com