求解Python参数传递问题

tongjidaxuezxd 2010-10-14 05:05:33
def inc(x):
return x+1


foo=10
print foo
foo=inc(foo)
print foo
结果:10
11
从这段程序可以看出Python参数传递用的是值传递
然后
def inc(x):
x[0]=x[0]+1

foo = [10]
inc(foo)
print foo
结果:[11]
可是这一段代码又是怎么回事?书上只说是一个小技巧,希望哪位大牛能详细讲解下这个小技巧



...全文
163 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
bestdowt1314 2010-11-03
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 31415926801227 的回复:]

python的函数参数都是传对象的引用。
整数,字符串以及元组因为是常量,不可改变,采用传值传递对象。
[/Quote]
赞同
31415926801227 2010-10-16
  • 打赏
  • 举报
回复
python的函数参数都是传对象的引用。
整数,字符串以及元组因为是常量,不可改变,采用传值传递对象。
  • 打赏
  • 举报
回复
python中的列表都是引用传递的,一个陷阱,函数中要进行一次深拷贝才能避免修改到传入的列表
guoxuqu 2010-10-15
  • 打赏
  • 举报
回复
学习了。
I_NBFA 2010-10-15
  • 打赏
  • 举报
回复
python函数没有传值,全是传引用。
GolemZ 2010-10-15
  • 打赏
  • 举报
回复
python的数据类型分为可变与不可变,list和dict可变,其他均不可变,函数参数都是值传递的引用。
详见《Python核心编程》...
guzl86 2010-10-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lokii 的回复:]

一个是整数,一个是列表
列表是传引用的,就这么回事。
[/Quote]
赞同。。。。
lokii 2010-10-14
  • 打赏
  • 举报
回复
一个是整数,一个是列表
列表是传引用的,就这么回事。
iambic 2010-10-14
  • 打赏
  • 举报
回复
你先解释下什么叫“值传递”;和“值传递”不同的还有什么传递;为什么你认为前一段代码是值传递;后一段代码与之相比又有什么让你觉得有问题的地方。
很多时候疑惑并不来源于你未知的东西。把你眼中事实看清楚,可能疑惑就自然而然消除了。

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧