美文网首页
assignment in python(python中的变量赋

assignment in python(python中的变量赋

作者: 9_SooHyun | 来源:发表于2019-11-18 00:36 被阅读0次

    python中的6种基本数据类型

    • int
    • bool
    • str
    • list
    • dict
    • tuple

    可变对象和不可变对象

    python中一切都是对象
    这些对象中,
    有些对象的是不可变化的,这些对象叫不可变对象
    有些对象的则是可变化的,这些对象叫可变对象

    在上述6种基本数据类型中,int bool str tuple 这4类的实例对象的值是不可变的,而list dict 这2类的实例对象的值是可变的

    python中的变量赋值 assignment in python

    新new、无名的对象 = 刚出生、待起名的娃

    我们可以给娃起正名、花名等很多个名字。对于这些名字而言,它们与娃产生了对应关系,这才有了意义

    在python中,我们也可以给对象起名字,比如可以把对象叫做 a / b / c...
    这里的a / b / c在程序中就叫做变量(名),对象则是一个个具体的值

    • 不可变对象赋给变量

    例如
    # 把int型对象1赋给变量a、b,也就是对象1有2个名字:a、b
    a = b = 1

    python变量赋值: a=b=1

    当执行新的赋值语句 a = a + 1时,我们将 a+1 这个对象赋给了a,即:
    # 把新的int型对象a+1,即int型对象2赋给变量a
    a = 2

    新的int型对象2与之前的int型对象1存放在内存中的不同位置,是完全不同的2个对象

    新的int对象2赋值给变量a

    每一个不可变对象存放在内存中属于自己的一片内存空间,对应着自己特有的、不同于其他对象的值,

    如果2个不可变对象取值相同,那么这2个对象是同一个对象

    • 可变对象赋给变量

    例如
    >>> c = [1, 2, 3]
    >>> id(c)
    1825408249160
    >>> d = [1, 2, 3]
    >>> id(d)
    1825408249416
    # 下面改变 c 和 d 指向的list对象的值
    >>> c.append(4)
    >>> id(c)
    1825408249160
    >>> d.pop(-1)
    3
    >>> id(d)
    1825408249416

    通过内存id可以发现,c指向的值为[1, 2, 3]的list对象d指向的值为[1, 2, 3]的list对象 完全是 2个不同的对象

    另外,通过改变 c 和 d 指向的list对象的值,发现修改前后的对象id是一样的,这说明,虽然值改变了,但对象还是原来那个对象。append后c还是指向原来的对象,只是值变了;同样的,d pop后也还是指向原来的对象,只是该对象的值变了

    python中函数传参本质--给函数形参赋值

    def f(a):
        a = 2
    b = 1
    f(b)
    print(b)
    

    上面代码结果是什么?1还是2?答案是1

    python中向函数传参,实质上是给函数的形参赋值

    f(b)发生的是f(a=b),b给形参a赋值
    那么a就和b一样,也指向了1


    然后进入函数体,执行a = 2,于是就...

    你说print(b)是1还是2?

    相关文章

      网友评论

          本文标题:assignment in python(python中的变量赋

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