开发者社区> 木子昭> 正文

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

简介: 对于不可变类型传递值(不会影响原数据) 不可变类型 对于可变类型传递引用(会影响原数据) 不可变类型传递引用 python3不可变类型 Number(数字) String(字符串) Tuple (元组) pytho...
+关注继续查看

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

不可变类型

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

不可变类型传递引用

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【Python】栈堆内存之引用的秘密
【Python】栈堆内存之引用的秘密
11 0
【Python】内存、引用、驻留
【Python】内存、引用、驻留
11 0
Python 再谈变量作用域与变量引用
Python 再谈变量作用域与变量引用
25 0
C向Python传递数组和List参数
C向Python传递数组和List参数
50 0
解决办法:C向Python传递字串数组导致进程崩溃
解决办法:C向Python传递字串数组导致进程崩溃
67 0
C向Python正确传递数组的代码
C向Python正确传递数组的代码
39 0
Windows中Python与OpenCV C++之间Mat传递
Windows中Python与OpenCV C++之间Mat传递
172 0
Python模块requests测试接口时通过session传递
在测试接口时需要有些接口登录后方可操作,这时需要将登录的session进行传递,可以直接获取登录后的cookie,也可以使用requests.Session():
44 0
Python中的函数参数是如何传递的?
Python中的函数参数是如何传递的?
65 0
讲讲Python中的函数传递问题 【文末送书】
正式的Python专栏第25篇,同学站住,别错过这个从0开始的文章!
61 0
+关注
木子昭
# 专注极客体验 # 享受效率生活 --- 让程序去做呗~ 程序又不会累~
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
双剑合璧-Python和大数据计算平台的结合
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关实验场景
更多