我是python的新手,正在尝试跟踪这个简单的程序。我想提高我查看代码并理解输出结果的能力。
老实说,我刚刚开始准备python入门期末考试,在这门课上遇到了麻烦。如果有人知道他们过去使用过的介绍python的简明资源,那也会很有帮助。
这是程序。
def fun(x):
x[0] = 0
x = [4,5,6]
return x
def main():
y = [1,2,3]
z = fun(y)
print("z =",z)
print("y =",y)
main()所以基本上我希望有人解释为什么输出是这样的:
z = [4, 5, 6]
y = [0, 2, 3] 发布于 2014-12-07 07:57:49
下面是一个简单的示例,您可以添加它来跟踪代码的执行情况:
import sys
def tracer(frame, event, arg):
print(event, frame.f_lineno, frame.f_locals)
return tracer
sys.settrace(tracer)
def fun(x):
x[0] = 0
x = [4,5,6]
return x
def main():
y = [1,2,3]
z = fun(y)
print("z =",z)
print("y =",y)
main()发布于 2014-12-07 05:39:16
在Python中,列表和对象的赋值更像是绑定。Y不是指1,2,3,但它与之相关。分配给y的其他变量也绑定到列表对象。
因此,代码逐步执行的过程如下所示:
如果您不想修改另一个函数中的列表或对象,可以使用copy()和deepcopy()方法来创建新对象。即
fun( y ) # passes [1,2,3] into fun()
fun( y.copy() ) # passes a copy of [1,2,3] into fun()https://stackoverflow.com/questions/27336715
复制相似问题