• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
云飞
博客园    首页    新随笔    联系   管理    订阅  订阅

Python 中函数传参是传值还是传引用

直接简单的例子:

 

 1 from ctypes import *
 2 import os.path  
 3 import sys
 4 
 5 def test(c):
 6     print "test before "
 7     print id(c)
 8     c+=2
 9     print "test after +"
10     print id(c)
11     return c
12 
13 def printIt(t):
14     for i in range(len(t)):
15         print t[i]
16 
17 if __name__=="__main__":
18     a=2
19     print "main before invoke test"
20     print id(a)
21     n=test(a)
22     print "main afterf invoke test"
23     print a
24     print id(a)

结果如下:

>>> 
main before invoke test
test before 
test after +
main afterf invoke test
39601564

 

结论:

python不允许程序员选择采用传值还是传引用。Python参数传递采用的肯定是“传对象引用”的方式。这种方式相当于传值和传引用的一种综合。如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值--相当于通过“传引用”来传递对象。如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用,就不能直接修改原始对象--相当于通过“传值'来传递对象。

 

posted @ 2017-03-14 11:39  映日荷花别样红  阅读(197)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3