类:数据 + 方法
实例:
实例在初始化时,类必须要实例为对象,在初始化时由初始化过程来做赋值,因此类必须实例化成对象,
这些实例对象其内部的数据不同,所以它们才成为不同的实例。对实例内部的数据可以执行某些类型的操作,这些操作只能是附加在这些实例上的操作,这些操作是由类在内部定义的,所以方法可以理解成实例调用接口或支持的操作。
任何一种内置的对象或数据类型在实例化出来其对象时,这个对象就决定了其所能够支持的操作。
比如计算3 + 5 ,就相当于对3调用内置的方法3.__add__(5),因此任何一种对象所支持的操作,是属于这个对象所属类型的所支持的方法,如果类型不支持这种方法,则对象一定不支持这种操作。
列表和字典最为常用,是可变对象;
变量名和对象在内存中各存储一个位置,变量名是指向对象的引用,所以在python中变量名没有类型,对象才有类型;
点号运算符:. 对于对象而言
- 属性:数据--在实例内部定义的所属于这个实例特定的变量名,变量名通常要指定一个对象,所以属性通常指向一个数据
- 返回一个数据,显示则要使用print语句
- 方法:操作()
- 调用:执行一段代码
可调用对象:callable() 函数、类、对象中的方法
函数名也是一种变量名,可以直接调用,在python内部函数也是一种对象,属于可调用对象,在引用这个对象通常使用函数名进行的。
函数名也是标识,这段标识也指向了内存的一段空间, 在内存它存的是函数体:print "hello"
变量名不能以数字开头,变量名不加引号,但是字串必须加引号
list.reverse原处逆序,不会返回任何结果,
如何获取使用帮助:
获取对象支持使用得属性和方法:dir()
某方法的具体使用帮助:help(list.pop)
获取可调用对象的文档字串:print obj.__doc__
支持对象支持使用的属性和方法:dir()
查看某方法的具体帮助:help()
获取可调用对象的文档字串:print obj.__doc__
集合:一组无序排列的可哈希的值
支持集合关系测试:
成员关系测试:in、not in、迭代
不支持:索引、元素获取操作,切片
集合类型:set(),fronzenset()
没有特定语法格式,只能通过工厂函数(set,fronzenset)创建
set
支持迭代,所以内部set()要给出的是一个可迭代对象
集合类型的方法和操作
集合操作
pop
update
add
fronzenset
容器、类型、对象
1.列表,元素,字典可以跨行定义,最后一个允许使用逗号,但空是不允许使用逗号的
2.所有对象都有引用计数,可以使用sys.getrefcount查看引用次数,使用del删除一个计数引用
3.列表、字典都支持浅复制和深复制:深复制的方法可以使用copy模块中的deepcopy()实现
浅复制:创建一个新对象,但是包含的则是对原始对象所包含项的引用,因此指向同一个位置
深复制:创建一个新对象,并且递归复制它所包含的所有对象
4.python中的所有对象都是“第一类的”,这意味着使用标识符命名的所有对象具有相同状态,于是,能够命名所有对象都可以直接当书记进行处理
5.所有序列(所有非负整数的有序集合)都支持迭代
6.所有序列都支持的操作和方法:
s[i]、s[i:j]、s[i:j:stride]、len(s)、max(S)、sum(s)、all(S)、any(s)
s1 + s2:连接
s1 * n:重复
obj in s1:成员关系判断
obj not in s1
7.可变序列的操作
s1[index] = value:元素赋值
s1[i:j] =t : 切片赋值
del s1[index]:删除元素
del s1[i:j] 删除切片
del s1[i:j:stride] 删除扩展切片
python的表达式和语句
表达式: 是由一个或者操作数和零个以上的操作符组成的序列(1+2)
语句:用来实现的操作:声明变量、变量赋值、调用函数方法、循环访问、条件判断
python中的常用的表达式操作符:
1、算术运算
x * y ,x /y ,x+y,x-y,x//y,x%y
2、逻辑运算:
x or y, x and y, not x
3、成员关系运算:
x in y , x noy in y
4、对象实例测试
x is y ,x not is y
5、比较运算:
x < y,x > y, x <= y,x >= y,x == y,x != y
6、位运算:
x | y ,x & y, x ^ y, x << y,x >> y
7、一元运算:
-x,+x,~x
8、幂运算:
x ** y
9、索引和分片
x[i],x[i:j],x[i:j:stride]
10、调用
x(....)
11、取属性:
x.attribute
12、元组:(....)
13、序列:[...]
14、字典:{...}
15、三元选择表达式:x if y else z
16、匿名函数: lambda args:expression
17、生成器函数发送协议: yield x
运算优先级:(由高到低)
(....),[....],{.....}
s[i],s[i:j]
s.attribute
s(....)
+x,-x,~x
x**y
* ,/, //, %
+ ,—
<<, >>
&
^
|
<, <=, >, >=, ==, !=
对象实力测试优先级
- is not is
- in not in
- not
- and
- or
- lambda
语句:
- 赋值语句:创建引用
- 调用(函数和方法)
- print:打印对象
- if/elif/else:条件判断
- for/else:序列迭代
- while/else:普通循环
- pass:占位符
- break:
- continue:
- def:定义函数
- return:返回值
- yield:生成器函数
- global:命名空间
- raise:(手动)触发异常
- import:导入
- from:模块属性访问
- class:类
- try/except/finally:捕获异常
- del:删除引用
- assert:调试检查
- with/as:环境管理器
赋值语句:
- 隐式赋值:import,from,def,class,for,函数参数
- 元组和列表分解赋值,当赋值符号(=)的左侧为元组或列表式,python会按照位置把右边的对象和左边的目标自左向右逐一进行配对,个数不同时会出异常,此时可以进行切片处理。
- 多重目标赋值
- 增强赋值:+=,-=,*=,/=,//=,%=