python对象比较 字符串编解码 异常处理 with-as作用
- 2016-09-29 23:08:00
- admin
- 原创 2227
一、python对象比较
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def key(self):
return self.name
def __cmp__(self, other):
return cmp(self.name, other.name)
def __str__(self):
return '%s=%d' %(self.name, self.age)
if __name__ == '__main__':
persons = []
persons.append(Person('allen', 20))
persons.append(Person('bob', 20))
persons.append(Person('candy', 20))
persons.sort()
for item in persons: print item
persons.sort(cmp=lambda x,y:cmp(x.name,y.name), reverse=True)
for item in persons: print item
persons.sort(key=Person.key, cmp=lambda x,y:cmp(x.lower(),y.lower()), reverse=True)
for item in persons: print item
二、修改系统默认编码
方法1:
设置环境变量PYTHONIOENCODING
方法2:
# -*- coding: utf-8 -*-
方法3:
stdi,stdo,stde=sys.stdin,sys.stdout,sys.stderr
reload(sys)
sys.stdin,sys.stdout,sys.stderr=stdi,stdo,stde
sys.setdefaultencoding('UTF-8')
三、字符串编解码
1、decode将其他编码的字符串转换成unicode编码,str.decode('gb2312')将gb2312编码的字符串转换成unicode编码;
2、encode将unicode编码转换成其他编码的字符串,str.encode('gb2312')将unicode编码的字符串转换成gb2312编码;
输出GBK编码中文示例:
# -*- coding: utf-8 -*-
name = '中国'
name = name.decode('UTF-8').encode('GBK')
print name
四、异常处理
推荐第一种异常抛出方式:
raise Exception('password incorrect')
raise Exception,'password incorrect'
raise Exception,('password incorrect')
异常处理:
try:
pass
except Exception as e:
print e
五、with-as作用
自动调用对象的enter和exit方法,用于对象自动初始化和自动清理:
with open("/tmp/foo.txt") as file:
data = file.read()