Table of Contents:
  1. 《Python基础教程》复读笔记(2)

    《Python基础教程》复读笔记(2)

    Reading Time:The full text has 254 words, estimated reading time: 2 minutes
    Creation Date:2017-04-07
    Article Tags:
     
    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

    1. 对序列每个元素执行函数:map(func, [1, 2, 3])
    >>> def print_i(i):return -i
    >>> map(print_i, [1, 2, 3])
    [-1, -2, -3]
    1. 返回值为真的元素列表:filter(func, [1, 2, 3]
    >>> def is_odd(i): return i % 2 == 1
    >>> filter(is_odd, [1, 2, 3])
    [1, 3]
    1. 返回执行结果继续迭代执行:reduce(func, [1, 2, 3])
    >>> def add(*pas):return pas[0] * 2 + pas[1] * 2
    >>> reduce(add, [1, 2, 3])
    18
    FINISH

    Random Articles
    Life Countdown
    default