2.1、字典、表达式和语句(0530)

在python中,当需要给定一个数值时,直接写出一个数值即可,不需要加单双引号或者花括号;

同时python中规定变量名不能以数值开头,所以在给定一个标识的时候,只要不加引号,那么这个标识要是是数值,要么是变量名;

因为变量名不能以数值开头,同时python中的字符串都是需要加引号的。

 

 类:数据 + 方法

实例:

实例在初始化时,类必须要实例为对象,在初始化时由初始化过程来做赋值,因此类必须实例化成对象;

这些实例对象其内部的数据不同,所以它们才成为不同的实例;

对实例内部的数据可以执行某些类型的操作,这些操作只能是附加在这些实例上的操作,这些操作是由类在内部定义的,所以方法可以理解成实例调用接口或支持的操作。

任何一种内置的对象或数据类型在实例化出来其对象时,这个对象就决定了其所能够支持的操作。

比如计算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 :   切片赋值 ( 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会按照位置把右边的对象和左边的目标自左向右逐一进行配对,个数不同时会出异常,此时可以进行切片处理。

 

  • 多重目标赋值

 

  • 增强赋值:+=,-=,*=,/=,//=,%=

 

 

posted @ 2018-07-18 22:59  Study~Column  阅读(242)  评论(0编辑  收藏  举报