Python学习笔记--Day0605
# python内部会维持一个数组,范围为[-5,256] # is是获取对象的id进行比较,而==可能会被重载,is效率高于== # ==判断对象间的值是否相等,而is判断对象标识是否相等,即是否指向同一内存地址 # import copy # # # a = -5 # # b = -5 # # print(a is b) # c = 259 # d = 259 # print(c is d) # True # dd = [[1, 2], (3, 4)] # e = copy.deepcopy(dd) # print(e is dd) # False # print(e == dd) # True # 值传递 or参数传递 # 所谓值传递,通常就是拷贝参数的值,然后传递给函数里的新变量。这样,原变量和新变量之间互相独立,互不影响。 # 所谓引用传递,通常是指把参数的引用传给新的变量,这样,原变量和新变量就会指向同一块内存地址。 # 如果改变了其中任何一个变量的值,那么另外一个变量也会相应地随之改变。 # Python中: # Python的所有的数据类型都是对象 # 变量的赋值,只是表示让变量指向了某个对象,并不表示拷贝对象给变量; # 而一个对象,可以被多个变量所指向。可变对象(列表,字典,集合等等)的改变,会影响所有指向该对象的变量。 # 对于不可变对象(字符串、整型、元组等等),所有指向该对象的变量的值总是一样的,也不会改变。 # 但是通过某些操作(+= 等等)更新不可变对象的值时,会返回一个新的对象。变量可以被删除,但是对象无法被删除。 # Python 中参数的传递既不是值传递,也不是引用传递,而是赋值传递,或者是叫对象的引用传递。 # 需要注意的是,这里的赋值或对象的引用传递,不是指向一个具体的内存地址,而是指向一个具体的对象。 # 生成器写法 # 生成器的概念应运而生,在你调用 next() 函数的时候,才会生成下一个变量。 # 生成器在 Python 的写法是用小括号括起来,(i for i in range(100000000)),即初始化了一个生成器。