为什么在这种情况下不需要全局关键字?[重复]
- 2025-04-10 09:47:00
- admin 原创
- 24
问题描述:
cache = {}
def func():
cache['foo'] = 'bar'
print cache['foo']
输出
bar
为什么这样做有效并且为什么不需要使用global
关键字?
解决方案 1:
因为您没有将 分配给cache
,所以您是在更改字典本身。cache
仍然指向字典,因此 本身没有变化。 该行cache['foo'] = 'bar'
转换为cache.__setitem__('foo', 'bar')
。 换句话说, 的值cache
是python dict
,并且该值本身是可变的。
如果您尝试通过使用来更改cache
所引用的内容cache = 'bar'
,那么您将会更改指向cache
的内容,然后您就需要global
关键字。
也许我对类似问题的旧回答可以帮助您理解区别:Python 列表不反映变量变化。
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD