首页 新闻 搜索 专区 学院

python函数传值

0
悬赏园豆:10 [已解决问题] 解决于 2012-10-10 19:36

如果某个函数需要同步改变 主函数的某个变量

python 里对于复杂的数据结构如 list 和dic  当形参都是引用的形式

而我的变量是单个变量 比如 int

一种方法是用 global

但是最好不要用global

我想问 还要什么方法

NashZhou的主页 NashZhou | 初学一级 | 园豆:40
提问于:2012-06-22 11:16
< >
分享
最佳答案
0

其实,python中没有传值调用和传引用调用的区别。python中一切都是对象,所以理论上应该都是传引用调用。

但是,python中strings, tuples, 和numbers是不可更改的对象,给这些不可更改的对象赋值时,相当于重新生成了另一个对象。

比如int就是不可更改的对象,函数外定义i=1,在函数内部给i赋值时(比如i=2),其实已经在内存中另外生成了一个i。

收获园豆:10
wang_yb | 老鸟四级 |园豆:3277 | 2012-06-22 13:23

你说的很对,那我这个问题 你有什么好的方法没

NashZhou | 园豆:40 (初学一级) | 2012-06-22 14:15

@2010Freeze: 

除了global,我也没什么好办法。。。

wang_yb | 园豆:3277 (老鸟四级) | 2012-06-22 20:17
其他回答(2)
0

还是将整个包装 成一个类吧

NashZhou | 园豆:40 (初学一级) | 2012-06-22 11:42
0

这样:

def foo(x):
    return x + foo.bar

foo.bar = 1
foo(2)
foo.bar = 2
foo(3)
Greatest | 园豆:678 (小虾三级) | 2012-06-25 14:23

太深奥了,看不懂

支持(0) 反对(0) NashZhou | 园豆:40 (初学一级) | 2012-06-25 16:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册