python笔记-编程优化NO1(简化)

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]

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值