【发布时间】:2012-12-26 21:23:42
【问题描述】:
我有一个函数,我在其中使用局部变量,然后在函数完成后传回最终变量。我想记录这个变量在函数之前是什么,但是全局变量与局部变量一起更新。这是我的代码的缩写版本(很长)
def Turn(P,Llocal,T,oflag):
#The function here changes P, Llocal and T then passes those values back
return(P, Llocal, T, oflag)
#Later I call the function
#P and L are defined here, then I copy them to other variables to save
#the initial values
P=Pinitial
L=Linitial
P,L,T,oflag = Turn(P,L,T,oflag)
我的问题是 L 和 Linitial 都在 Llocal 更新时准确更新,但我希望 Linitial 不改变。 P 没有改变,所以我对这里发生的事情感到困惑。帮助?谢谢!
勇敢者的完整代码在这里:https://docs.google.com/document/d/1e6VJnZgVqlYGgYb6X0cCIF-7-npShM7RXL9nXd_pT-o/edit
【问题讨论】:
-
对象有哪些类型?你能给出一个完整的、独立的可运行示例来展示你所看到的吗?
-
P 是一个整数,L 是一个列表。 T 也是一个 int,oflag 是一个 bool。我只是通过 IDLE 的调试器发现了这个问题,它非常微妙。但是,如果我显示全局变量和局部变量,我会看到 L、Linitial 和 Llocal 这三个变量同时发生变化。我可以在这里上传整个代码,但它有几百行。我现在担心的部分从 190 和 57 开始。目前它从第 66 行抛出错误,但错误的根本原因是这个变量更新。
-
请注意PEP-8 建议为类名保留
CapWords。 -
@user1930726 制作一个简短(但可运行)的示例来说明问题。
-
下次使用pastebin.com 或类似的工具来分享您的代码。 :)
标签: python variables global local