成都网站建设设计

将想法与焦点和您一起共享

Python中传递值与传递引用有什么不同-创新互联

这篇文章给大家介绍Python中传递值与传递引用有什么不同,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

公司主营业务:网站制作、成都网站设计、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联推出南明免费做网站回馈大家。

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

Python中传递值与传递引用有什么不同

不可变类型

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

Python中传递值与传递引用有什么不同

不可变类型传递引用

python3不可变类型

  • Number(数字)

  • String(字符串)

  • Tuple (元组)

python3可变类型

  • List(列表)

  • Dictionary (字典)

  • Sets(集合)

参数传递的思考

  • 我们声明的变量名可以看做便签

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

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

Python中传递值与传递引用有什么不同 

链表对象

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()

关于Python中传递值与传递引用有什么不同就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


本文名称:Python中传递值与传递引用有什么不同-创新互联
当前地址:http://chengdu.cdxwcx.cn/article/diepph.html