python2

作者: Ewitter | 来源:发表于2019-08-29 13:46 被阅读0次
1. windows gitbash 使用python shell
(使用中可能 有bug——某些操作不支持): 
    winpty python 或 python -i
2. python2 VS python3:
raw_input() ---------------- input()
print var   ---------------- print(var)
    eg:python2:  print "%s is number %d" % ("python",1)
        python3:  print("%s is number %d" % ("python",1))
3. ++n和--n 解释为:
 +(+n)、-(-n),即结果都是n
(a1<a2<...<am<an)  等价于 (a1<a2 && a2<a3 && ... && am<an)
4. 支持复数: m+nj
    复数num,num.real为实部,num.imag为虚部,num.conjugate()为num的共轭复数
5. 字符串、list
字符串有 索引运算符[] 和 切片运算符[:]; 首字符索引为0,最末字符索引为-1.
    + 连接字符串, * 重复字符串(+、* 同样适用于tuple)

列表[]可易值; 元组()只读; 二者都有 索引运算符[]  和 切片运算符[:],结果为各自原类型

List解析

eg:
var_a = [x**2 for x in range(4) if not x%2]             
range usage: list_result = [i for i in range([start=0,] stop [,step=1]).
if-elif-else        与或非(and or not)

对复合类型变量var 有:
for item i var:             等价于  for i in range(len(var)):
    print(var)                          print(var[i])
6. 参数和对象通过引用调用或传递
try-except错误检测处理,raise引发一个异常。

python参数和对象通过引用调用或传递的。函数无return则自动返回NONE对象。
dir([obj]) 或 help([obj])显示对象属性。
int(obj)  len(obj)  handle=open(file_name, mode = 'r')   
str(obj)  type(obj)(返回值是一个type对象)
7. 缩进是 四个空白符
# 注释        \ 接上一行      ;将两语句连接在一行中     :将代码块的头和体分开
python缩进用 四个空白符,不建议用制表符,因为 不同平台的制表符代表的 空白符宽度不同。
8.多元赋值
多元赋值: x,y,z = a,b,c
交换: x,y = y,x
9. 下划线
iskeyword()函数在keyword module中。

下划线 _ 对解释器有特殊意义:
     _xxx 不用 from module import *               __xxx__系统定义名字           
        __xxx类中私有变量
10. 对象默认是引用计数
对象默认都是引用计数方式(即 浅拷贝);    
 del 语句可删除 对象的最后一个引用(引用计数为0时,该对象成为垃圾回收机制的回收对象)

垃圾回收器:是一块独立代码,用于寻找引用计数为0 的对象,
  但也检查引用计数虽大于0但应被销毁的对象。可能导致循环引用。
    python垃圾回收器实际是 一个引用计数器和一个循环垃圾回收器。
    当对象引用计数为0时,解释器会暂停并释放掉该对象 和仅有该对象可访问的其他对象。
11. 解释器路径
#!/usr/local/bin/python是python解释器完整路径,一般python安装在/usr/local/bin或/usr/bin下, 
    但必须确认python路径 是该指定的路径,
    当不知道python路径时,在Unix下,可以 #!/usr/bin/env python 或 #!/bin/env python。
命令行 输入 文件名 即可运行。
12. python 基础module
python module: 
    Debugger: pdb   Logger:logging  Profilers: profile/ hotshot / cProfile
13. 变量声明、对象特性
python通过赋值 对变量进行声明。
python使用对象模型 存储数据,构造任何类型的值都是一个对象。
    python对象都有 三个特性:
        身份(用内建函数 id()得到,被认为是 对象的内存地址)、类型(内建函数type()得到)、值

python中: 
      a is b 等价于 id(a)==id(b)   同理 a is not b ——>id(a) != id(b)

python中, 整数对象 和 字符串对象 是不可变

type(42) ——> <type 'int'>(types.IntType) 得知42是int类型;
        type( type(42)) ——> <type 'type'>

python的特殊类型 Null或称作 NoneType,只有一个值None,不支持任何 运算,也无任何 内建方法。
14. 切片、模块导入
切片 (切片对象可由 内建slice()函数生成):
    多维切片:sequence[start1:end1, start2:end2] 或 sequence[... , start1:end1]。
    步进切片: sequence[startIndex : endIndex : step].

减少查询次数:
    eg,from mudule import submodule 比import module 再使用module.submodule查询次数要少。
15. 存储、访问模型
原子或标量存储:一个能保存单个字面对象的类型;
容器存储:可容纳多个对象的类型。    
所有python容器对象都能容纳不同类型的对象。


访问模型:直接存取,顺序,映射。

通过给数字对象(重新)赋值,可“更新”一个数值对象,这里“更新”指:
      生成了一个新的数值对象,并得到其引用。
    因为数值对象时不可变的;python对象模型与常规对象模型有些不同。
16. 工厂函数、功能函数、进制转换、序列类型转换
工厂函数:将其它数值类型转换为相应的数值类型。
    bool(obj)即obj.__nonzero__()     int(obj,base=10)    
    long(obj,base=10)   float(obj)  complex(str)    complex(real,imag=0.0)

功能函数:
    abs(num)求绝对值        
    coerce(num1,num2)将num1、num2转换为同一类型并以元组形式(num1,num2)返回。
    divmod(num1,num2)返回元组(num1/num2, num1%num2),复数仅取实部的商。
    pow(num1,num2,mod)先num1**num2,有提供mod则再对mod求余。   
    round(flt,ndig=0)对浮点数flt四舍五入,精度为ndig(默认为0)

进制转换函数:
    oct(int_num)返回字符串表示的八进制 
    hex(int_num)返回字符串表示的十六进制    
    chr(int_num)返回一个字符串(0<=int_num<=255)    
    ord("string_of_one_length")返回一个整数
    unichr(int_num)返回对应Unicode字符(仅Python2)  note:int_num可为任意表示形式的 整数

判断obj是否含有member: member in obj  或 member not in obj

序列类型转换工厂函数:
    list(iter)将可迭代对象转换为列表   str(obj)    unicode(obj)    
    tuple(iter)将可迭代对象转换为元组

序列类型内建函数:
    enumerate(iter)返回一个enumerate对象,该对象生成由 各元素索引和其值组成的元组;
    len(seq)    min(iter) max(iter)     reversed(seq)   sorted(iter, func=None,)
    sum(seq,init = 0)
17. 格式化操作辅助指令
    * 定义宽度或者小数点精度       - 左对齐       + 在正数前面显示加号
    <sp> 在正数前面显示空格      # 在八进制前面显示0,十六进制前面显示0x/oX
    0 显示的数字前面填充0而不是空格       (var) 映射变量(字典参数)
18. 集合
set 可变集合        frozenset 不可变集合     dict 字典     (note:具体成员方法请help)
集合类型操作符:
    | 联合求并集即方法union()   & 求交集   - 求差集   ^ 求差分(结果的成员只能属于一个集合)
    这些只适用于可变集合: |= 即update()        &= 即intersection_update()       
               -= 即difference_update()      ^= 即symmetric_difference_update()
19. 部分运算符、迭代器
if-elif-else    三目运算:X if C else Y 即 C ? X:Y;
break   continue    pass

迭代器: iter(obj)  iter(obj, functional)
20. 文件相关
打开文件: open()返回一个句柄(需用close()关闭)     file()(python3好像不支持)
    eg:import os(有很多有关文件的方法)

try-except[-else[-finally]]

raise 触发异常      assert 断言

默认形参 在形参列表最后。
21. 新式类和经典类
新式类和经典类:新式类写法eg:class MyClass(bases); 经典类没有后面的(bases),
            即 新式类必须继承一个父类,参数bases默认是 object(所有类之母)
特殊的类属性:
    class.__name__ (class的名字——字符串类型)    class.__doc__ (class的文档字符串)
    class.__bases__ (class的所有父类组成的元组)   class.__dict__ (class的属性)
    class.__module__ (class定义所在的模块) class.__class__ (class实例对应的类——仅新式类)

给一个与类属性同名的实例属性赋值,会“隐藏”类属性,但删除该实例属性,类属性又可见。

子类调用父类的函数时,经典类是深度优先搜索,新式类是广度优先搜索。
22. 类、实例的内建函数
    issubclass(subclass, superclass) 判断subclass是否是superclass的子孙类,返回bool;
    isinstance(obj1, obj2) 判断obj1是否是 类obj2或obj2的子类的 一个实例,返回bool;
    getattr(obj,attr[,default])、hasattr(obj,attr)、setattr(obj,attr,val)、
       delattr(obj,attr) 分别表示 获取、判断有无、赋值、删除obj中属性attr(attr为字符串)
    dir(obj=NONE)返回obj属性的一个列表,
            若obj没给出,则显示局部名字空间中的属性,即locals().keys();
    vars(obj=NONE)返回obj的属性及其值的一个字典,
            若没给出obj,则显示局部名字空间字典属性及值,即locals()。

相关文章

网友评论

      本文标题:python2

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