python---朝花夕拾
1. Python解释器; 交互:python -i demo.py; IDE
2. '{0:.3}'.format(a/b)
3. 面向对象:
- 【赋值】:标识符_a_1 引用 Float类 值为98.6 的实例: a=98.6;
- 【赋值】:标识符 引用对象的内存地址 隐式相关联; None; 动态类型;
- 【赋值】:对象别名,同一底层对象(a=b);赋新值-新存储对象(a=b+1);
- 【对象-实例化】:类的构造函数(可迭代参数)&内置类;
- 【对象-调用方法】:应用程序/更新方法-改变对象状态-sort;访问器-response.lower().startswith('y');
4.内置类:
-- 不可变:
--- bool/int(任意大小; 0b1011; 0o52; 0x7F)/float
--- /str(字符的索引序列;“““blabla”””)
--- /tuple(序列;(1,);)/frozenset(集合);
-- 可变:
---list(序列; [];本身可迭代)
---/set(集合;不重复、散列表;无序;不可变实例;{1,'re'};可迭代参数输出元素集合set('hello')=>{'h','e','l','o'})
---/dict(映射;{};{'a':'b','c':'d'};dict类构造函数参数:现有映射/键值对;dict(pair) pair=[('k1','v1'),('k2','v2')]);
5.运算符:
-- not/and/or; is / is not(标识符指向同一对象 或 不同对象值等价); ==/!=表达式相等;~/&/|/^(异或)/<</>>
-- 序列运算符(str; tuple; list): s[a:z:s]; s1+s2; k*s; v in s; s<=t(元素字典序比较);
-- 集合set,frozenset运算符:k in s; s1==s2;
子集交并差集s1>=s2; s1|s2;s1&s2;s1-s2;s1^s2
-- 字典运算符:del d[k]; k in d; d1==d2(等价);
6. 内置函数:
-- all(itera); any(itera); chr(num); hash(obj); id(obj); input(prompt); isinstance(obj,cls); iter(itera); map(f,i);ord(a); pow(x,y,z);reversed(seq);round(x); round(x,k);type(obj);
7. 文件:
-- fp=open('a.txt'):文件对象; fp.read():串儿;fp.read(k):k个串儿;fp.readline():行串; fp.readlines():行数组; for line in f; fp.seek(k)k位置处; fp.tell()偏离; fp.write(string); fp.writelines(seq);
8.异常
- Exception[基类]; AttributeError[obj.foo无该成员]; EOFError[文件输入] ;IOError[输入输出失败];
- IndexError[索引超出序列范围];KeyError[不存在的集合字典关键字];KeyboardInterrupt[ctrl+c];
- NameError[标识符不存在]; StopIteration[遍历元素不存在]; TypeError[参数类型]; ValueError[参数值]; ZeroDivisionError;
【抛异常】--- def sqrt(x):
if not isinstane(x,(int,float)):
raise TypeError('' ")
elif x<0:
raise ValueError(" ")
【捕异常】--- try:~ except ValueError:print() except EOFError: raise
--- try:~ except (ValueError, EOFError): pass
9. 迭代器
- 可迭代对象:列表元组集合-容器类型;字符串-字符迭代;字典-键迭代;文件-行迭代;用户自定义类型;
- 迭代器对象i;next(i):StopIteration;
- obj可迭代;iter(obj)可产生迭代器;
- list 实例可迭代;但本身不是迭代器; for、iter;
-- data=[1,2,3,4]; i=iter(data); next(i);
- 隐式迭代序列值函数和类:无须立刻构建数据结构存储值;
-- range(10000000) 返回可迭代range对象;只在有需要的时候 一次性产生百万值;
-- for j in range(1000000): 无须预留内存百万值;循环被打断,无须花时间计算range中未使用的值;
-- keys();values();items(); 基于可迭代对象 生成视图 而非显示结果列表;
--- list(range(1000)) 值为0-999的列表实例;
--- list(d.values())元素基于字典d的当前值生成的列表;
10. 生成器
- 用生成器创建迭代器;定义类的实例作为迭代器使用;
--- def factors(n):
for k in range(1,n+1):
if n%k==0: yield k
--- for factor in factors(100): 创建生成器的实例;循环迭代至yield指出下一个值——暂时中断至另一个值被请求;
网友评论