目录
1.断言
2.with ... as ...
3.字符串方法
4. lambda函数
1.断言
assert {condition} ,??{message}?
condition结果为False时,会抛出异常,message为异常消息
>>> assert 2 > 1, '不对'
>>>
>>>
>>> assert 2 > 3, '不对'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AssertionError: 不对
2.with ... as ...
上下文管理器: 同时包含__enter__()和__exit__()方法 ????????__enter__(self):进入上下文管理器自动调用,该方法会在with as代码块执行之前执行。如果with语句有as子句,那么该方法的返回值会被赋值给as后的变量;该方法可以返回多个值,因此在as子句后面也可以指定多个变量,由"()"括起来组成元组。 ????????__exit__(self, exc_type,exc_value, exc_traceback):退出上下文管理器自动调用。该方法会在with as 代码块执行之后执行。如果with as代码块成功执行结束,程序自动调用该方法,调用该方法的三个参数都为None。如果with as代码块因为异常而中止,程序也自动调用该方法,使用sys.exc_info得到的异常信息将作为调用该方法的参数。
使用:执行完后自动会关闭文件
with open('/Users/michael/test.jpg', 'rb') as f:
f.read()
?自定义上下文管理器,实现一个范围耗时统计类:
import time
class TimeSpan:
def __init__(self):
self.start = None
def __enter__(self):
self.end = None
self.start = time.time()
print('enter')
def __exit__(self, exc_type, exc_value, exc_traceback):
self.end = time.time()
print("exit 消耗时间:%s" % (self.end - self.start ))
with TimeSpan() as t:
print('exec begin')
for i in range(1000):
i += 1
if i == 999:
print("exec end")
-------------------------------
enter
exec begin
exec end
exit 消耗时间:0.0005316734313964844
3.字符串方法
s.strip(rm) 删除s字符串开头和末尾的rm字符
s.lstrip(rm)?删除s字符串开头的rm字符
s.rstrip(rm)删除s字符串末尾的rm字符
rm不传默认删 空格,换行符\n ,制表符\t
s.split(str="", num=分隔次数).
str–分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等
num–分割次数,默认为-1,即分隔所有。?
4. lambda函数
lambda即匿名函数
>>> total = lambda x,y : x + y
>>>
>>> total(2,3)
5
Python中,也有几个定义好的全局函数方便使用的,filter, map, reduce
>>> foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]
>>> print(list(filter(lambda x: x % 3 ==0 ,foo)))
[18, 9, 24, 12, 27]
>>> print(list(map(lambda x: x + 3, foo)))
[5, 21, 12, 25, 20, 27, 11, 15, 30]
>>> from functools import reduce
>>> reduce(lambda x,y : x + y, foo)
139
|