20161216py学习笔记:类/异常类/逗号与加号

1、类

 

 2、 内建异常类

Exception 所有异常的基类

AttributeError 特性或赋值失败引发

IOError 试图打开文件时引发的错误

IndexError 使用seq不存在的索引

KeyError 映射中不存在的key

NameError 找不到名字(变量)时引发

SyntaxError 代码为错误时引发

TypeError 内建操作或函数应用于错误类型的对象

ValueError 内建操作或函数应用于正确的对象,但是该对象使用的值不合适

ZeroDivisionError 除法时除数为0

 

 

 

3、传递异常的开启与关闭

class MuffledCalculator:
  muffled=False
  def calc(self,expr):
    try:
    return eval(expr) #eval,执行str,如进行求值等
    except ZeroDivisionError:
      if self.muffled:
        print 'Division by zero is illegal'
      else:
        raise

    except TypeError:

      if self.muffled:

       print'you should enter num'

#把这两个异常合写:

    except(ZeroDivisionError,TypeError):

 

>>>calculator=MuffledCalculator()

>>>calculator.muffled=True

  >>>捕捉异常开启

>>>没有‘calculator.muffled=True’时,

  >>>捕捉异常关闭

  #这个办法很好,可以控制一个程序的开启与关闭

 

4、exception不被处理的话,会漂浮到主程序。

>>>def faulty():

  raise Exception('Something is wrong')

>>>def ignore_exception():

  faulty()

>>>def handle_exception():

  try:

    faulty()

  except:

    print 'Exception handled'

>>>ignore_exception()

  引发错误

>>>handle_exception()

  Exception handled

  错误到这才被处理

 

5、关于代码效率

#下为伪代码:

def describePerson(person):
  print 'Description of',person['name']
  print 'Age:',person['age']
  if 'occupation' in person:
    print 'Occupation:',person['occupation']

这个代码效率不高,if句中对occupation查找了2次。

优化版,依旧是伪代码:

def describePerson(person):

  print 'Description of',person['name']

  print 'Age:',person['age']

  try:

    print 'Occupation'+person['occupation'] #这里打印职业时用加号而不是逗号,否则字符串‘Occupation’无论是否发生异常都会被输出。

  else KeyError;

    pass

 

6、上面的例子也说明了逗号与加号在print中的区别

print *+* ,这是执行了一个print命令

print *,*  这个可以算作是2个print命令,因为也可写成:

  print *,

  print *

另外 用逗号两个衔接之间有个去不掉的空格

 

转载于:https://www.cnblogs.com/raomuxun/p/6187222.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值