• 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参数传递采用的肯定是“传对象引用”的方式。这种方式相当于传值和传引用的一种综合。如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值--相当于通过“传引用”来传递对象。如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用,就不能直接修改原始对象--相当于通过“传值'来传递对象。

  • 相关阅读:
    通配符
    Hibernate入门简介
    Java的参数传递是值传递?
    Java线程详解
    java基础总结
    谈谈对Spring IOC的理解
    Oracle SQL语句之常见优化方法总结--不定更新
    JVM 工作原理和流程
    Java中的String为什么是不可变的? -- String源码分析
    Spring AOP 简介
  • 原文地址:https://www.cnblogs.com/yunfeiqi/p/6547690.html
Copyright © 2020-2023  润新知