1.with
2.异常(raise,assert)
3.lambda匿名函数
4.filter函数
1.with
python中的with语句使用于对资源进行访问的场合,保证不管处理过程中是否发生错误或者异常都会执行规定的__exit__(“清理”)操作,释放被访问的资源,比如有文件读写后自动关闭、线程中锁的自动获取和释放等。
eg:
with A() as X:
with B() as Y:
with C() as Z:
with-body
nested函数可以将多个上下文管理器组织在一起,避免使用嵌套的with语句
with nested(A(),B(),C()) as (X,Y,Z):
with-body
2.异常相关
(a)raise:raise 异常后的代码将不再执行。
eg:https://www.cnblogs.com/ggzhangxiaochao/p/9002847.html
try:
s = None
if s is None:
print "s 是空对象"
raise NameError #如果引发NameError异常,后面的代码将不能执行
print len(s) #这句不会执行,但是后面的except还是会走到
except TypeError:
print "空对象没有长度"
s = None
if s is None:
raise NameError
print 'is here?' #如果不使用try......except这种形式,那么直接抛出异常,不会执行到这里
(b)assert:assert expression 与if not expression: raise AssertionError 相同
import sys
assert ('linux' in sys.platform), "该代码只能在 Linux 下执行"
3.lambda函数:主要用来减少大量单行函数(个人理解)
匿名函数lambda:是指一类无需定义标识符(函数名)的函数或子程序。
lambda 函数可以接收任意多个参数 (包括可选参数) 并且返回单个表达式的值。
lambda匿名函数的格式:冒号前是参数,可以有多个,用逗号隔开,冒号右边的为表达式。其实lambda返回值是一个函数的地址,也就是函数对象。
a=lambda x:x*x
print(a)
print(a(3))
---->
<function <lambda> at 0x0000000002093E18>
9
https://www.cnblogs.com/kaishirenshi/p/8611358.html
4. filter函数:python2返回是一个list,python3返回到是一个迭代器(可以用list(filter(函数名,对象))转化成list)
该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
def is_odd(n):
return n % 2 == 1
tmplist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
newlist = list(tmplist)
print(newlist)
结合上一个lambda函数的例子如下:
list(filter(lambda x:True if x % 3 == 0 else False, range(100))) # 筛选100以内3的倍数。 filter(筛选函数,可迭代对象),lambda 简单的定义一个匿名函数。最后if语句为一个简写,if true,left,else right
# 等价于
[x for x in range(100) if x%3 == 0]