异常捕获补充
# 异常捕获的完整形式
try:
name
except NameError as e:
pass
except Exception as e:
pass
else:
pass
finally:
pass
# try中出现异常,如果except中有对应的异常,执行其中的代码。如果没有异常则处理else,最后都执行finally代码。
迭代取值与索引取值对比
迭代取值不能重新求值,索引取值无论多少次皆可。迭代取值的对象在同一时间只占一个内存空间,索引取值的对象比如列表中的元素皆以占据内存空间。
生成器对象
生成器就是自定义迭代器。生成器对象会’停止‘在yield,遇到__next__方法再从停止位置继续执行。
# 自定义range方法
def my_range(start,end=None,step):
if end is None:
end = start
start = 0
while start < end:
yield start
start += step
# yield还能传值
def eat(name):
print('%s进入餐厅。。。'%name)
food = yield
print('%s吃了%s'%(name,food))
g = eat('xie')
print(g.__next__()) # xie进入餐厅。。。
# send既给yeild传值又执行了__next__()
print(g.send('牛肉')) # xie吃了牛肉
生成器表达式: (i**2 for i in range(10))
yield与return对比
程序执行遇到yield会停止,调用其__next__方法返回值并继续执行,而return方法直接结束并返回值。
常见内置函数
# 1.abs() 取绝对值方法
print(abs(-1)) # 1
# 2. all() 容器类型数据中所有元素转化为布尔值都为True返回True,否则返回False
# any() 容器类型数据中任意一个元素转化为布尔值为True则返回True,否则返回False
l1 = [1,24,0]
l2 = [1,-1,0]
print(all(l1)) # False
print(any(l2)) # True
#3. bin() oct() hex() 进制数转化
#4. bytes()转化为二进制
str1 = 'long may the sunshine'
res = bytes(str1,'utf8')
res1 = str(res,'utf8')
#5. callable() 查看对象是否是可调用的
def index():
pass
callable(index) # True
#6. chr()返回数字对应的acsii码表的字符 ord()返回字符对应的ascii码表的数字
print(chr(65)) # A
print(ord('A')) # 65
#7. complex() 复数
print(complex(123)) # (123+0j)
#8. dir() 查看当前目录下能使用的方法
#9. divmod() 返回除数与余数
divmod(5,2) # (2,1)
#10. eval()可执行简单python语法结构程序的字符串
# exec()可执行复杂python语法结构程序的字符串
eval("print('xie')") # xie
func_str = '''
for i in range(5):
print(i,end=' ')
'''
exec(func_str) # 0 1 2 3 4
#11. isinstance() 判断是否属于某个数据类型
print(isinstance(1,int)) # True
#12. pow() 返回x的y次幂
print(pow(2,4)) # 16
#13. round() 五舍六入
print(round(2.6)) # 3
#14. sum() 求和
l = [2,4,6,8,10]
print(sum(l)) # 30