python对象比较 字符串编码和解码 异常抛出异常处理 with-as作用

2016-09-29 23:08:00
admin
原创 1846
摘要:python对象比较 字符串编码和解码 异常抛出异常处理 with-as作用

一、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,
    print
    persons.sort(cmp=lambda x,y:cmp(x.name,y.name), reverse=True)
    for item in persons:print item,
    print
    persons.sort(cmp=lambda x,y:cmp(x.lower(),y.lower()), key=Person.key, reverse=True)
    for item in persons:print item,
    print


二、字符串编码解码

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


三、修改系统默认编码

方法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')


四、异常抛出异常处理

推荐第一种异常抛出方式:

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()

发表评论
评论通过审核之后才会显示。