一 匿名函数
定义:
通过关键字 lambda 去定义一个匿名函数
定义:
变量名 = lambda 参数:表达式 #匿名函数会将你缩写的表达式进行返回
调用:
变量名(参数[,参数2])
优点:
书写简洁
缺点:
只能实现有限逻辑
二 文件导入的方式
- import 文件名
import 文件名
#例如:
import mymoudle
2.from 文件名 import 方法名
from myfunction import func
3__name__
的使用
判断是否在本文件中
可以把只在文件执行的代码使用 来判断这样在其他文件被name判断过得就不会再执行
也就是在文本执行 不在导入文件里面执行
if __name__ == '__main__':
func(5)
三 列表推导式
(1)列表推导式 就是提供了一个快速创建列表的方法
(2)快速创建列表的几种方法
mylist = [x for x in range(100)]
mylist = [[x,x+10] for x in range(100)]#创建二维列表 第一个是本身 第二个是本省+10
mylist = [(x,x+10) for x in range(100)]#列表里嵌套元组
mylist = [x for in range(100) if x>20 and x<80]#添加过滤的作用
mylist = [[x,y] for x in range(10) for y in range(5)]#for循环的嵌套
四 迭代器
(1)可以被iter() 和 next() 组合使用的称为迭代器
mylist = iter(['a','b','c','d'])
print(next(mylist))
print(next(mylist))
print(next(mylist))
print(next(mylist))
超过iter中元素个数,会报错
(2)可迭代对象:
就是可以直接被for循环来遍历 的 称为 迭代对象
from collections import Iterable
print(isinstance((),Iterable))
print(isinstance([],Iterable))
print(isinstance({},Iterable))
print(isinstance(1,Iterable))
print(isinstance('',Iterable))
(3)被iter修饰过的 为 迭代器 通过next 方法 就可以将迭代器里面的值 进行一个一个的取出来 当全部取出来以后 在next会报StopIteration的错误
五 生成器generator
1.可以大大节约内存 因为不会一下全部执行完毕 ,而是在使用的时候不断的去执行
2.生成器也可以配合迭代器的next来使用
3.生成器创建的方式
(1)mylist = (x for x in range(100))
(2)函数中有yield方法的存在 ,称为generator生成器
def demo():
print('123')
yield 10 #相当于返回值
print('123')
yield 10
print('123')
yield
print(type(demo()))
mygen=demo()
print(next(mygen))
print(next(mygen))
六 异常处理
主体结构
try:
pass#
except 错误类型 as error:
print(error)
except 错误类型 as error:#多层捕获
print(error)
except:
pass
(1) 配合else
只有代码没有出现错误、异常才会走else
try:
pass #可能会出现错误异常的代码
except 错误类型 as error: #给错误类型 起一个别名
print(error) #将错误输出
else:
pass #代码没有出现任何错误的情况下 才会走我的else
(2)配合finally来使用 不管是否正确都走
try:
1+1
except:
print("出现错误了")
finally:
print("我就想看我能不能出现")
###############################################
try:
# int('asdsasdas')
mylist = [1,2]
mylist[3]
except TypeError as t:
print("TypeError")
except ValueError as v:
print(v)
except IndexError as i:
print(i)
else:
print('一直')
finally:
print('Finally')