python很多实现,主流cpython 用c来实现,也可以jython ,利用jvm来处理。jython生成字节码给jvm实现。
UTF8 3个字节 gbk 2个字节
3.5循环输出汉字 --可以 --2.7不可以
enumerate --enumerate(list,index=0) 返回一个对象 dict(enumerate(list))
深浅拷贝
从这就能看出来,就以列表为例,如果浅拷贝,那么系统就新建一个列表,它的每个元素都指向原来列表的每个元素(就像C语言里的指针数组),输出的时候就把它各元素指向的母体元素内容显示出来,所以list1追加了f元素以后list2并没有显示,因为list2里并没有指向这个新元素的元素。但是追加了x以后显示出来了,因为x属于list1的第三个元素的一部分,在list2有对应的指向,所以就显示出来了。对于深拷贝来说没有任何改变,因为深拷贝是新建一个列表,把原列表的内容原封不动拷过来,拷过来以后它和原列表一模一样,至于原列表后来做了什么改变根本不关它的事。形象理解就是浅拷贝是活的,深拷贝是死的。
---------------------------------------------------------------------------------
exec 执行字符串无返回值 eval 执行字符串,有返回值,不支持迭代 compile 编译字符串
read()、readline()、readlines()
read() --一次性读取 ,readline --逐行读取 readlines-- 逐行处理 --for line in f.readlines
seek()移动指针位置 tell()函数 目前指针 --文件处理 truncate(n): 从文件的首行首字符开始截断,截断文件为n个字符;无n表示从当前位置起截断;截断之后n后面的所有字符被删除。其中win下的换行代表2个字符大小。
装饰器 -- 增强函数功能,在函数执行前后 执行其他的功能(代码运行期间动态增加功能的方式)
总结 return不加括号返回内存地址,下面第二步加括号才是执行该内存地址的指令
##输入时候,内存数据,通过flush处理把内存数据刷到磁盘
格式化打印
单行打印 \r
然而当执行print语句的时候,python会在打印完这个语句的同时在结尾加上’\n’,也就是换行,这就导致在控制台下一旦被print之后就无法再修改了。所以我们现在的输出就不能再使用print来完成了。我们要使用的是来自sys库的sys.stdout.write()函数,这个函数会在控制台输出这个字符串的同时不加上任何结尾,这就意味着这个输出还没有完全结束。通过sys.stdout.flush()函数可以把输出暂时打印在控制台中(造成print的假象,我们姑且先叫这个假输出)。那么如果我们使用’r’这个转义字符(回到行首)。
flush刷新内存
python 汉字10进制
pickle json -- 前者只针对python ,后者针对多语言的交互
pickle+findall*+group() *号默认贪婪 等价于{n}次 --未匹配到时需要反映的(相当于*为0) ,最后会多一次 ----------------------小总结
findall * http://www.dataguru.cn/blog-4771-1048.html
json 模块 loads的字符串必须为双引号 ; load,loads区别
xml
反射 ---根据字符串求对象中操作成员
利用__import__导入函数 dd=__import__("lxml") 等价于 import lxml as dd
__import__(a.b.c) 如果 未设置fromlist 则返回a 如果设置为True则返回c 类似__import__(a.b.c,fromlist=True)
getattr getattr(urllib2,urlopen) 参数均为字符串
多继承 --自己-左-右
python不支持重载(函数名相同,参数个数不同) 重写(派生类与基类相同的函数优先级不同
继承顺序