小编典典

Python:何时通过引用传递变量,何时按值传递变量?

python

我的代码:

locs = [ [1], [2] ]
for loc in locs:
    loc = []

print locs
# prints => [ [1], [2] ]

为什么loc不引用元素locs

Python:除非明确复制,否则所有内容都将作为参考传递[这不是True吗?]

请说明.. python如何确定 引用和复制

更新:

怎么做 ?

def compute(ob):
   if isinstance(ob,list): return process_list(ob)
   if isinstance(ob,dict): return process_dict(ob)

for loc in locs:
   loc = compute(loc)  # What to change here to make loc a reference of actual locs iteration ?
  • locs必须包含最终处理后的响应!
  • 我不想使用enumerate,没有它可能吗?

阅读 199

收藏
2020-12-20

共1个答案

小编典典

Python中的所有内容都是通过值传递和分配的,与Java中的所有值都传递和分配的方式相同。Python中的每个值都是对对象的引用(指针)。对象不能是值。分配总是复制值(它是一个指针);因此,两个这样的指针可以指向同一对象。除非您要进行明确的复制操作,否则绝不会复制对象。

对于您的情况,循环的每次迭代都会将列表的元素分配给变量loc。然后,您为变量分配其他内容loc。所有这些值都是指针;您正在分配指针;但您不会以任何方式影响任何对象。

2020-12-20