《Python基础教程》复读笔记(2)
閱讀時間:全文 254 字,預估用時 2 分鐘
創作日期:2017-04-07
上篇文章:《Python基础教程》复读笔记(3)
下篇文章:《Python基础教程》复读笔记(1)
BEGIN
断言
assert x == y, 'hehe'
=>
if x != y:
raise AssertionError('hehe')
exec和eval
exec用于执行表达式,eval用于表达式求职。
>>> exec('print "haha"')
haha
>>> eval('1+1*2')
3
*pospar
和**keypar
都用在函数中用于接收参数,其中*pospar
用于接收值参数,**keypar
用于接收赋值参数
闭包
返回闭包内的函数,此函数可以访问此闭包内的所有局部变量。
def foo():
y = 10
def bar(x):
return x * y
return bar
递归实现二分查找
def search_bin(sequence, number, lower=0, upper=None):
if upper is None:
upper = len(sequence) - 1
if lower == upper:
assert number == sequence[upper]
return upper
else:
middle = (lower + upper) // 2
if number > sequence[middle]:
return search_bin(sequence, number, middle+1, upper)
else:
return search_bin(sequence, number, lower, middle)
map、filter和reduce
- 对序列每个元素执行函数:
map(func, [1, 2, 3])
>>> def print_i(i):return -i
>>> map(print_i, [1, 2, 3])
[-1, -2, -3]
- 返回值为真的元素列表:
filter(func, [1, 2, 3]
>>> def is_odd(i): return i % 2 == 1
>>> filter(is_odd, [1, 2, 3])
[1, 3]
- 返回执行结果继续迭代执行:
reduce(func, [1, 2, 3])
>>> def add(*pas):return pas[0] * 2 + pas[1] * 2
>>> reduce(add, [1, 2, 3])
18
FINISH
上篇文章:《Python基础教程》复读笔记(3)
下篇文章:《Python基础教程》复读笔记(1)