python入门(12)
自定义异常处理
class LenTypeException(Exception):
def __init__(self):
self.errmsg="长度错误"
def __str__(self):
return self.errmsg
def xxx(name,age):
if(len(name)<2):
raise LenTypeException()
try:
xxx("下",18)
except LenTypeException as e:
print(e)
异常的传递
class LenTypeException(Exception):
def __init__(self):
self.errmsg="长度错误"
def __str__(self):
return self.errmsg
def xxx(name,age):
if(len(name)<2):
raise LenTypeException()
try:
try:
xxx("下",18)
except NameError as e:
print("内层")
except LenTypeException as e:
print("外层")
注意点:
异常处理可以传递,如果自身不能捕获,就会想外层传递,最外层不能捕获,则报错
导包
import random
random.randint()
from random import randint,randrange
from random import *
randint()
生成器
创建生成器
list_=[x for x in range(5)]
print(list_)
obj1=(x for x in range(5))
print(obj1)
#方法二
def fei(num):
a=0
b=1
current_index=0
while current_index<num:
print(a)
a,b=b,a+b
current_index+=1
def fei(num):
a=0
b=1
current_index=0
while current_index<num:
# print(a)
yield a
a,b=b,a+b
current_index+=1
for i in fei(6):
print(i)
有yield就是生成器
关于生成器
list_=[x for x in range(5)]
print(list_)
obj1=(x for x in range(5))
print(obj1)
from collections import Iterable
print(isinstance(obj1,Iterable))
注意点:
- (推导式)生成的是一个生成器
- 如果要转元组,tuple进行强转
- isinstance判断,生成器是一个可迭代对象
关于生成的访问
print(next(obj1))
print(next(obj1))
print(next(obj1))
print(next(obj1))
print(next(obj1))
print(next(obj1,"no>>>"))
注意点:
- 访问方式:
- 通过for循环遍历
- 通过next()
- 如果遍历次数超过总个数,会报错,要么给初值,要么try