python笔记(持续更新)

1、编译python遇到下面的编码问题:

SyntaxError: Non-ASCII character ‘\xe9‘ in file E:\projects\learn.py on line 3, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

解决方法:解决方法:源代码文件第一行添加:#coding:utf-8

2、python快速教程:http://www.cnblogs.com/vamei/archive/2012/09/13/2682778.html

3、is表示引用是否是指向同一个对象,==表示引用指向对象的内容是否相同。

4、globals函数可以查看变量的引用情况,getrefcount可以获得一个对象被引用的次数。

5、struct.calcsize():用来计算特定格式的输出的大小,是几个字节

6、inspect模块功能:

(1).对是否是模块,框架,函数等进行类型检查。

(2).获取源码

(3).获取类或函数的参数的信息

(4).解析堆栈

7、python标准库:http://python.usyiyi.cn/python_278/library/index.html

8、对于处理非ASCII字符的字符串,最好在输入时转换为unicode编码,在输出的时候使用对应的编码进行编码后再输出。

9、可以将zip文件加入sys.path,然后可以通过import导入zip文件中的.py文件模块。读取zip文件可以用zipfile模块。直接处理zip文件字符串,可以直接用cStringIO中的StringIO模块,而不用先将字符串存到一个临时的zip文件中,再进行处理。StringIO可以看做是一个放在内存中的文件对象,适合于文件的操作都可以用在StringIO模块上。

10、可以用tarfile模块将一个目录树归档到一个压缩的tar文件。

11、判断当前系统:sys.platform。

12、fnmath可以用来检测文件名匹配模式,os.walk可以用来遍历目录。

13、xlwt、xlrd和xlutils.copy用来处理excel。

14、当你觉得直接改变某列表而不是某列表时,列表推导常常是最好的方法。例如:假设需要将某列表L中的大于100的元素设置为100,最好的方法如下:

L[ : ] = [min(x, 100) for x in L]
此时的L并没有重新绑定一个新的列表,而是修改了原来列表的内容。

15、把列表推导的[]改成()就是生成器表达式了。生成器表达式最好的一点就是不用一次性将所有数据加载如内存种。

16、遍历列表并获得索引,最好用enumerate包装下。

17、创建二维列表应该用列表推导,而不是用*,*只会复制引用。

multilist = [[0 for col in range(5)] for row in range(3)]
multilist2 = [[0] * 5] * 3
虽然上面这个很简洁,不过会出现共享引用问题,即multilist2[0] == multilist2[1]

18、给字典添加一个条目,d.setdefault(word, []).append(pagenumber)。

19、itertools模块主要用来做产生器的,可以使数据不用一次性加载进入内存。

20、random.choice随机获取列表中的元素。

21、bisect二分查找。

22、pyqt:http://pyqt.sourceforge.net/Docs/PyQt4/index.html

23、greenlet用协程实现并发:http://greenlet.readthedocs.org/en/latest/

24、 循环import模块会怎样?

python中循环导入不会怎么样,因为每个模块被import的时候只会执行一次,并且该模块的引用会存放在sys.modules中,后面如果再import该模块时,虚拟机会查看sys.modules是否存在该模块,如果存在则不导入。看看下面一个例子就一目了然了:

test.py:

1 import sys
2 print ‘test module‘
3 print ‘before import test2‘, sys.modules.keys()
4 import test2
5 print ‘after import test2‘, sys.modules.keys()
6 if __name__ == ‘main‘:
7     import test

test2.py

1 import sys
2 print ‘test2 module‘
3 print ‘before import test‘, sys.modules.keys()
4 import test
5 print ‘after import test‘, sys.modules.keys()

运行结果:

 1 test module
 2 before import test2 [‘copy_reg‘, ‘sre_compile‘, ‘locale‘, ‘_sre‘, ‘functools‘, ‘encodings‘, ‘site‘, ‘__builtin__‘, ‘sysconfig‘, ‘operator‘, ‘__main__‘, ‘types‘, ‘encodings.encodings‘, ‘encodings.gbk‘, ‘abc‘, ‘_weakrefset‘, ‘encodings._codecs_cn‘, ‘errno‘, ‘encodings.codecs‘, ‘sre_constants‘, ‘re‘, ‘_abcoll‘, ‘ntpath‘, ‘_codecs‘, ‘encodings._multibytecodec‘, ‘nt‘, ‘_warnings‘, ‘genericpath‘, ‘stat‘, ‘zipimport‘, ‘encodings.__builtin__‘, ‘warnings‘, ‘UserDict‘, ‘_multibytecodec‘, ‘sys‘, ‘codecs‘, ‘os.path‘, ‘_functools‘, ‘_codecs_cn‘, ‘_locale‘, ‘signal‘, ‘traceback‘, ‘linecache‘, ‘encodings.aliases‘, ‘exceptions‘, ‘sre_parse‘, ‘os‘, ‘_weakref‘]
 3 test2 module
 4 before import test [‘test2‘, ‘copy_reg‘, ‘sre_compile‘, ‘locale‘, ‘_sre‘, ‘functools‘, ‘encodings‘, ‘site‘, ‘__builtin__‘, ‘sysconfig‘, ‘operator‘, ‘__main__‘, ‘types‘, ‘encodings.encodings‘, ‘encodings.gbk‘, ‘abc‘, ‘_weakrefset‘, ‘encodings._codecs_cn‘, ‘errno‘, ‘encodings.codecs‘, ‘sre_constants‘, ‘re‘, ‘_abcoll‘, ‘ntpath‘, ‘_codecs‘, ‘encodings._multibytecodec‘, ‘nt‘, ‘_warnings‘, ‘genericpath‘, ‘stat‘, ‘zipimport‘, ‘encodings.__builtin__‘, ‘warnings‘, ‘UserDict‘, ‘_multibytecodec‘, ‘sys‘, ‘codecs‘, ‘os.path‘, ‘_functools‘, ‘_codecs_cn‘, ‘_locale‘, ‘signal‘, ‘traceback‘, ‘linecache‘, ‘encodings.aliases‘, ‘exceptions‘, ‘sre_parse‘, ‘os‘, ‘_weakref‘]
 5 test module
 6 before import test2 [‘test2‘, ‘copy_reg‘, ‘sre_compile‘, ‘locale‘, ‘_sre‘, ‘functools‘, ‘encodings‘, ‘site‘, ‘__builtin__‘, ‘sysconfig‘, ‘operator‘, ‘__main__‘, ‘types‘, ‘encodings.encodings‘, ‘encodings.gbk‘, ‘abc‘, ‘_weakrefset‘, ‘encodings._codecs_cn‘, ‘errno‘, ‘encodings.codecs‘, ‘sre_constants‘, ‘re‘, ‘_abcoll‘, ‘ntpath‘, ‘_codecs‘, ‘test‘, ‘encodings._multibytecodec‘, ‘nt‘, ‘_warnings‘, ‘genericpath‘, ‘stat‘, ‘zipimport‘, ‘encodings.__builtin__‘, ‘warnings‘, ‘UserDict‘, ‘_multibytecodec‘, ‘sys‘, ‘codecs‘, ‘os.path‘, ‘_functools‘, ‘_codecs_cn‘, ‘_locale‘, ‘signal‘, ‘traceback‘, ‘linecache‘, ‘encodings.aliases‘, ‘exceptions‘, ‘sre_parse‘, ‘os‘, ‘_weakref‘]
 7 after import test2 [‘test2‘, ‘copy_reg‘, ‘sre_compile‘, ‘locale‘, ‘_sre‘, ‘functools‘, ‘encodings‘, ‘site‘, ‘__builtin__‘, ‘sysconfig‘, ‘operator‘, ‘__main__‘, ‘types‘, ‘encodings.encodings‘, ‘encodings.gbk‘, ‘abc‘, ‘_weakrefset‘, ‘encodings._codecs_cn‘, ‘errno‘, ‘encodings.codecs‘, ‘sre_constants‘, ‘re‘, ‘_abcoll‘, ‘ntpath‘, ‘_codecs‘, ‘test‘, ‘encodings._multibytecodec‘, ‘nt‘, ‘_warnings‘, ‘genericpath‘, ‘stat‘, ‘zipimport‘, ‘encodings.__builtin__‘, ‘warnings‘, ‘UserDict‘, ‘_multibytecodec‘, ‘sys‘, ‘codecs‘, ‘os.path‘, ‘_functools‘, ‘_codecs_cn‘, ‘_locale‘, ‘signal‘, ‘traceback‘, ‘linecache‘, ‘encodings.aliases‘, ‘exceptions‘, ‘sre_parse‘, ‘os‘, ‘_weakref‘]
 8 after import test [‘test2‘, ‘copy_reg‘, ‘sre_compile‘, ‘locale‘, ‘_sre‘, ‘functools‘, ‘encodings‘, ‘site‘, ‘__builtin__‘, ‘sysconfig‘, ‘operator‘, ‘__main__‘, ‘types‘, ‘encodings.encodings‘, ‘encodings.gbk‘, ‘abc‘, ‘_weakrefset‘, ‘encodings._codecs_cn‘, ‘errno‘, ‘encodings.codecs‘, ‘sre_constants‘, ‘re‘, ‘_abcoll‘, ‘ntpath‘, ‘_codecs‘, ‘test‘, ‘encodings._multibytecodec‘, ‘nt‘, ‘_warnings‘, ‘genericpath‘, ‘stat‘, ‘zipimport‘, ‘encodings.__builtin__‘, ‘warnings‘, ‘UserDict‘, ‘_multibytecodec‘, ‘sys‘, ‘codecs‘, ‘os.path‘, ‘_functools‘, ‘_codecs_cn‘, ‘_locale‘, ‘signal‘, ‘traceback‘, ‘linecache‘, ‘encodings.aliases‘, ‘exceptions‘, ‘sre_parse‘, ‘os‘, ‘_weakref‘]
 9 after import test2 [‘test2‘, ‘copy_reg‘, ‘sre_compile‘, ‘locale‘, ‘_sre‘, ‘functools‘, ‘encodings‘, ‘site‘, ‘__builtin__‘, ‘sysconfig‘, ‘operator‘, ‘__main__‘, ‘types‘, ‘encodings.encodings‘, ‘encodings.gbk‘, ‘abc‘, ‘_weakrefset‘, ‘encodings._codecs_cn‘, ‘errno‘, ‘encodings.codecs‘, ‘sre_constants‘, ‘re‘, ‘_abcoll‘, ‘ntpath‘, ‘_codecs‘, ‘test‘, ‘encodings._multibytecodec‘, ‘nt‘, ‘_warnings‘, ‘genericpath‘, ‘stat‘, ‘zipimport‘, ‘encodings.__builtin__‘, ‘warnings‘, ‘UserDict‘, ‘_multibytecodec‘, ‘sys‘, ‘codecs‘, ‘os.path‘, ‘_functools‘, ‘_codecs_cn‘, ‘_locale‘, ‘signal‘, ‘traceback‘, ‘linecache‘, ‘encodings.aliases‘, ‘exceptions‘, ‘sre_parse‘, ‘os‘, ‘_weakref‘]
10 [Finished in 0.2s]

从执行结果来看,test先import test2,由于sys.modules中没有test2,所以执行test2,并将test2加入sys.modules中;在test2中,import test1,由于sys.modules中没有test1,所以执行test1,并将test1加入sys.modules中;执行到import test2时,由于此时sys.modules中存在了test2,所以不执行test2,等到test1执行完成后回到test2继续执行;test2继续执行完成后回到最先的test执行。

25、pickle对象持久化

pickle用法很简单,将一个python对象通过dumps序列化为字符串,如果通过loads将一个str转化为一个python对象。具体例子如下:

1 >>> t1 = (‘this string‘, 42, [1, 2, 3])
2 >>> import pickle
3 >>> p1 = pickle.dumps(t1)
4 >>> p1
5 "(S‘this string‘\np0\nI42\n(lp1\nI1\naI2\naI3\natp2\n."
6 >>> t2 = pickle.loads(p1)
7 >>> t2
8 (‘this string‘, 42, [1, 2, 3])
9 >>>

26、 自定义迭代器

在class中定义__iter__和next函数即可,具体如下:

 1 class Iter(object):
 2     def __init__(self, owner, start, stop):
 3         self.owner = owner
 4         self.value = start - 1
 5         self.stop = stop
 6     def next(self):
 7         if self.value == self.stop:
 8             raise StopIteration
 9         self.value += 1
10         return self.value ** 2
11
12 class Squares(object):
13
14     def __init__(self, start, stop):
15         self.start = start
16         self.stop = stop
17     def __iter__(self):
18         return Iter(self, self.start, self.stop)
19
20 x = Squares(1, 5)
21 for i in x:
22     for j in x:
23         print i, ‘ ‘, j

27、内置函数locals和globals

主要是语句执行的上下文环境。

28、文本操作

将制表符转换为空格:string.expandtabs

29、写操作会屏蔽外部命名空间的搜索,只会搜索当前命名空间。命名空间的搜索是在编译器进行的。

30、print在windows控制台输出需要设置gbk编码格式:

print s.encode(‘gbk‘)

时间: 2024-10-14 09:00:32

python笔记(持续更新)的相关文章

BLE资料应用笔记 -- 持续更新

BLE资料应用笔记 -- 持续更新 BLE 文档 小书匠 蓝牙 4.0 ●分Single mode与Dual mode. ●Single mode只能与BT4.0互相传输无法向下兼容(与3.0/2.1/2.0无法相通);Dual mode可以向下兼容可与BT4.0传输也可以跟3.0/2.1/2.0传输 ●超低的峰值.平均和待机模式功耗,覆盖范围增强,最大范围可超过60米. ●速度:支持1Mbps数据传输率下的超短数据包,最少8个八组位,最多27个.所有连接都使用蓝牙2.1加入的减速呼吸模式(sn

Sqlserver 笔记 持续更新

1.sp_spaceused : sp_spaceused table_name --------------------------------------------------------------------------------------------- name  rows  reserved  data  index_size  unused table_name 16470592  36315696KB  35796160KB  519432KB  104KB name  -

IAP(In-App Purchase) 集成笔记-持续更新

IAP(In-App Purchase) 集成笔记-持续更新 IAP的集成已经有很多教程,包括apple官方的说明,足够详细,但其过程中一些坑免不了要遇到,总结一些经验,避免绕弯路.和apple打交道的模式永远不是技术为主,而是如何了解规则,应对规则 我的App该不该集成IAP? 大多数App不需要集成IAP,除非类似游戏道具,金币.或者App的功能的全部或者部分依赖于其他虚拟服务和商品,或者硬件,而这些如果需要购买,必须集成IAP.除了游戏类,特定设备的客户端,比如某个支持认证的WiFi热点A

【阅读笔记】计算机网络 第五版 阅读笔记(持续更新)

计算机网络 第五版阅读笔记 第一章 概述 1.因特网的组成 边缘部分:由所有连接在因特网上的主机组成 核心部分:由大量网络和连接这些网络的路由器组成 2.计算机之间的通信方式 客户服务器端方式(C/S模式):客户端是服务请求方,服务器端是服务提供方 对等方式(P2P模式):平等,对等连接通信,每一个主机既是客户又是服务器. 3.电路交换,分组交换和报文交换 3.1 电路交换:建立连接(占用通信资源)->通话(一直占用)->释放连接(释放通信资源). 优点:在通话的全部时间内,通话的两个用户始终

Git学习笔记(持续更新)

强制同步为远程的代码 远程仓库回退了commit的情况下(第2条描述之情况),强制同步远程的代码到本地 #更新远程最新的所有代码,但是不merge或者rebase git fetch --all #直接reset到master,也就把刚才fetch的更新了 git reset --hard origin/master 回退版本 #回退本地版本git reset --hard <commit_id>#强制提交到服务器 git push origin HEAD --force 新建分支和远程分支

H5填坑笔记--持续更新

最近一直在做移动端的页面,发现很多的坑,这里做一下总结,填填坑…… css常见的问题(一) 一.iOS键盘首字母自动大写 IOS的机子,默认英文输入法状态下,首字母是自动大写的,有时候挺烦人的. 在iOS中,默认情况下键盘是开启首字母大写的功能的,如果业务不想出现首字母大写,可以这样: <input type="text" autocapitalize="off" /> 二.iOS输入框默认内阴影和样式问题 在iOS上,输入框默认有内部阴影,但无法使用

web前端开发随手笔记 - 持续更新

本文仅为个人常用代码整理,供自己日常查阅 html 浏览器内核 <!--[if IE]><![endif]--> <!--[if IE 6]><![endif]--> <!--[if gte IE 7]><![endif]--> <!--[if lte IE 7]><![endif]--> <!--[if !IE]><![endif]--> <!--[if !(lte IE 7)]

python 学习(持续更新......)

1.Python没有数组,但是列表 (list) 跟数组很像:Python的元组 (tuple) 与列表相似,但是元组的元素不能 修改: 列表使用方括号,元组使用小括号,其实可以把元组看成是只读的列表: 在Python中,空字符串"", 0, 空列表[], 空字典{}, 空元组()都相当于False 2.%s操作符的使用 3.正则匹配(re  正则表达式模块) 字符串里,每个反斜杠都要写成 \\ ,例如 s='\\' 4.设置编码,在xxoo.py里写 import sys reloa

Python练习题–持续更新

1.你是一个高级测试工程师,现在要做性能测试,需要你写一个函数,批量生成一些注册使用的账号. 产生的账号是以@163.com结尾,长度由用户输入,产生多少条也由用户输入,用户名不能重复,用户名必须由大写字母.小写字母.数字组成,结果如下图: 2.测试机器的磁盘太小,经常报警,要写一个清理日志的脚本,每次运行就把三天之前的日志删除,日志名的格式是xxx-20170623.log. 3.公司服务器,经常被别人攻击,要写个监控nginx日志的脚本,每分钟运行一次,如果这一分钟内同一个ip请求次数超过2

读《Oracle从入门到精通》笔记--持续更新中

第一章 Oracle 11g概述 1.6节 启动与关闭数据库实例 启动数据库: Startup [nomount|mount|open|force][resetrict][pfile=filename] 解释:nomount ---> 表示启动实例不加载数据库 mount ---> 表示启动实例.加载数据库并保持数据库的关闭状态 open ---> 表示启动实例.加载并打开数据库(默认选项) force ---> 表示终止实例并重新启动数据库 resetrict  --> 用