美文网首页
python可变类型与不可变类型

python可变类型与不可变类型

作者: 数据工程师从入门到放弃 | 来源:发表于2018-12-13 20:53 被阅读0次

python可变类型与不可变类型

[TOC]

不可变类型

#不可变类型

int,string,float,tuple

def int_test(): 
    i = 77
    j = 77
    print(id(77))                  #140396579590760
    print('i id:' + str(id(i)))      #i id:140396579590760
    print('j id:' + str(id(j)))      #j id:140396579590760
    print i is j                    #True
    j = j + 1 #此时 已经新开辟了内存区间
    print('new i id:' + str(id(i)))  #new i id:140396579590760
    print('new j id:' + str(id(j)))  #new j id:140396579590736
    print i is j                    #False

if __name__ == '__main__':
    int_test()

作者:炸鸡叔
链接:https://www.jianshu.com/p/c5582e23b26c
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

因为int类型是不可变类型,所有其实是j复制了一份到新的内存地址然后+1,然后j又指向了新的地址。所以j的内存id发生了变化

image

可变类型

dict,list

def dict_test():
    a = {}
    b = a
    print(id(a))
    b['a'] = 'hhhh'
    print('id a:' + str(id(a)))
    print('a:' + str(a))
    print('id b:' + str(id(b)))
    print('b:' + str(b))

if __name__ == '__main__':
    dict_test()


140367329543360

id a:140367329543360

a:{'a': 'hhhh'}

id b:140367329543360

b:{'a': 'hhhh'}

image

python函数参数传递

由于python规定参数传递都是传递引用,也就是传递给函数的是原变量实际所指向的内存空间

当传过来的是可变类型(list,dict)时,我们在函数内部修改就会影响函数外部的变量。

而传入的是不可变类型时在函数内部修改改变量并不会影响函数外部的变量

即为什么函数默认参数要用元组而非列表


def test(a_int, b_list):
    a_int = a_int + 1
    b_list.append('13')
    print('inner a_int:' + str(a_int))#6
    print('inner b_list:' + str(b_list))#[10,11,'13']

if __name__ == '__main__':
    a_int = 5
    b_list = [10, 11]

    test(a_int, b_list)

    print('outer a_int:' + str(a_int))#5
    print('outer b_list:' + str(b_list))#[10,11,'13']

相关文章

  • Python可变类型与不可变类型

    Python可变类型与不可变类型 1、可变类型:List(列表),Dic(字典),Set(集合) 2、不可变类型:...

  • Python面试基础整理

    Python可变类型与不可变类型不可变类型:数字、字符串、元组可变类型:列表、字典 浅拷贝和深拷贝浅拷贝:新旧对象...

  • Python中的可变类型,不可变类型,以及变量引用

    Python中的可变类型,不可变类型,以及变量引用 可变与不可变 不可变类型:即一旦定义不支持修改的类型,在Py中...

  • python可变类型与不可变类型

    python可变类型与不可变类型 [TOC] 不可变类型 因为int类型是不可变类型,所有其实是j复制了一份到新的...

  • python基础

    python 类型与运算 可变类型与不可变类型 核心类型中,数字、字符串和元组是不可变的;列表和字典不是这样 可作...

  • python中哪些类型不能作为字典的key

    python中的类型分可以分为两类,可变类型和不可变类型 可变类型:dict、list、set 不可变类型:int...

  • 2018-03-30

    可变与不可变类型 Python的每个对象都分为可变和不可变,主要的核心类型中,数字、字符串、元组是不可变的,列表、...

  • Python变量

    Python代码执行可视化 http://www.pythontutor.com/ 一、可变类型与不可变类型 不可...

  • global与可变类型与不可变类型

    global与可变类型与不可变类型 [TOC]

  • 2018-06-05 python基础理解1

    #1.可变类型与不可变数据类型# 可变类型:列表、字典 不可变类型:数字、字符串、元祖

网友评论

      本文标题:python可变类型与不可变类型

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