python学习笔记
1,字符串是不可变的;
2,列表是可变的;
3,python 中的简单赋值绝不会复制数据;
4,形参为 * *name 形式时,接收一个字典;
5,*args
形参后的任何形式参数只能是仅限关键字参数,即只能用作关键字参数,不能用作位置参数;
6,用 *
操作符把实参从列表或元组解包出来;
7,列表是动态的,长度大小不固定,可以随意地增加、删减或者改变元素(mutable);
8,元组是静态的,长度大小固定,无法增加删减或者改变(immutable);
9,字典(dict)和集合(set),集合是无序的;
10,比较操作符'=='
表示比较对象间的值是否相等,而'is'
表示比较对象的标识是否相等,即它们是否指向同一个内存地址;
11,比较操作符'is'
效率优于'=='
,因为'is'
操作符无法被重载,执行'is'
操作只是简单的获取对象的ID,并进行比较;而'=='
操作符则会递归地遍历对象的所有值,并逐一比较;
12,浅拷贝中的元素,是原对象中子对象的引用,因此,如果原对象中的元素是可变的,改变其也会影响拷贝后的对象,存在一定的副作用;
13,变量的赋值,只是表示让变量指向了某个对象,并不表示拷贝对象给变量;而一个对象,可以被多个变量所指向;
14,可变对象(列表,字典,集合等等)的改变,会影响所有指向该对象的变量;
15,对于不可变对象(字符串、整型、元组等等),所有指向该对象的变量的值总是一样的,也不会改变。但是通过某些操作(+=等等)更新不可变对象的值时,会返回一个新的对象;
16,变量可以被删除,但是对象无法被删除;
17,列表(list: [0, 1, 2]),元组(tuple: (0, 1, 2)),字典(dict: {0:0, 1:1, 2:2}),集合(set: set([0, 1, 2]));