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

发布于 2021-01-29 19:36:40

我的代码:

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,没有它可能吗?
关注者
0
被浏览
127
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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

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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看