美文网首页进击的Python程序员工具癖
Python中 传递值 与 传递引用 的区别

Python中 传递值 与 传递引用 的区别

作者: zhaoolee | 来源:发表于2018-02-21 16:55 被阅读135次

对于不可变类型传递值(不会影响原数据)

不可变类型

对于可变类型传递引用(会影响原数据)

不可变类型传递引用

python3不可变类型

  • Number(数字)
  • String(字符串)
  • Tuple (元组)

python3可变类型

  • List(列表)
  • Dictionary (字典)
  • Sets(集合)

参数传递的思考

  • 我们声明的变量名可以看做便签
  • 为变量名赋值的操作可以看做将标签贴到"值"的表面(值可以是可变类型,和不可变类型)

以链表中的节点对象为例(实例化的节点对象为不可变类型, 但对象中的属性是可变的)

链表对象
class NodeList(object):
    def __init__(self, val):
        self.val = val
        self.next = None

# 遍历链表
def traverse_nodes(head):

    tmp = head
    while tmp:
        print("节点id为:", id(tmp), "节点的值为:", tmp.val, )
        tmp = tmp.next

# 创建链表
def create_node_list():

    head = NodeList(0);
    left_p = head
    print("头节点id:",id(head), "当前节点id:",id(left_p), "当前节点值:", left_p.val)

    left_p.next = NodeList(1);
    left_p = left_p.next
    print("头节点id:",id(head), "当前节点id:",id(left_p), "当前节点值:", left_p.val)    

    left_p.next = NodeList(2);
    left_p = left_p.next
    print("头节点id:",id(head), "当前节点id:",id(left_p), "当前节点值:", left_p.val)

    left_p.next = NodeList(3);
    left_p = left_p.next
    print("头节点id:",id(head), "当前节点id:",id(left_p), "当前节点值:", left_p.val)

    return head

def main():
    # 创建链表
    print("==>创建链表函数中:")
    head = create_node_list()

    print("==>在遍历函数中:")
    traverse_nodes(head)

if __name__ == '__main__':
    main()

相关文章

  • C++基础

    C++ 值传递、指针传递、引用传递详解C++中引用传递与指针传递区别 引用传递和指针传递的区别 引用的规则:(1)...

  • Python中 传递值 与 传递引用 的区别

    对于不可变类型传递值(不会影响原数据) 不可变类型 对于可变类型传递引用(会影响原数据) 不可变类型传递引用 py...

  • python值传递&引用传递

    参考 Python值传递还是引用传递

  • Java 与值传递

    问: 什么是值传递?什么是引用传递?为什么说 Java 中只有值传递? 一、值传递与引用传递 实参与形参: 实际参...

  • 聊聊Java内部类

    一.磨叽磨叽Java值传递与引用传递 “在Java里面参数传递都是按值传递”即:按值传递是传递的值的拷贝,按引用传...

  • java是值传递

    值传递和引用传递最大的区别是传递的过程中有没有复制出一个副本来,如果传递的是副本,那就是值传递,否则就是引用传递 ...

  • python3 参数中的陷阱,可变对象和不可变对象

    介绍引用传递 python只允许使用引用传递, 不存在其他语言中的值传递。引用传递即引用内存地址, 无论是赋值还是...

  • PHP值传递与引用传递的区别

    先敲两段代码然后就可以看出两者的区别,咱们透过现象看本质 两段代码的差别在于函数sum的参数上,一个是传值$a,另...

  • 快速区别值传递和引用传递

    复习Java知识的时候又看到值传递和引用传递的区别,然后就查询一下,结果都是Java到底是值传递还是引用传递之争,...

  • Python 进阶内容整理

    Python 之禅 参数传递是值传递还是引用传递 深拷贝与浅拷贝 垃圾回收机制 del 元类 (metaclass...

网友评论

    本文标题:Python中 传递值 与 传递引用 的区别

    本文链接:https://www.haomeiwen.com/subject/aointftx.html