python 문법 기교 소결

1. python 값 교환
a = 10
b = 100
c = 0

a,c,b = c,b,a

print a
print b
print c

2. lambda 표현 식
f = lambda x,y:x**y
print f(2,3)

그 중에서 x, y 는 매개 변수 이 고 x * y 는 되 돌아 오 는 결과 입 니 다.lambda, python 의 익명 함수, python 에서 coding 에 꼭 필요 한 것 은 아 닙 니 다.그러나 그 는 코드 를 간소화 하여 더욱 아름 답 게 할 수 있다.
3.yield
def yieldTest(arr):
    for i in arr:
        print i,
        msg = yield i
        print msg,              

def my_iter(arr):
    i = 1
    yt = yieldTest(arr)
    yt.next()
    while i < len(arr):
        yt.send(",")
        i+=1

arr = [1,3,5,7,9,11,13,15,17,19]

my_iter(arr)

yield 는 쉽게 말 하면 생 성기 입 니 다. 생 성 기 는 이러한 함수 입 니 다. 지난번 에 돌아 올 때 함수 체 에 있 었 던 위 치 를 기억 합 니 다.생 성기 함수 에 대한 두 번 째 (또는 두 번 째) n 회) 이 함수 중간 으로 호출 되 었 으 며, 마지막 으로 호출 된 모든 부분 변 수 는 변 하지 않 습 니 다.
생 성 기 는 함수 입 니 다. 함수 의 모든 매개 변 수 는 유 지 됩 니 다.
두 번 째 로 이 함 수 를 호출 할 때 사용 하 는 매개 변 수 는 지난번 에 보 존 된 것 입 니 다.
생 성 기 는 흐름 제어 구조 생 성 기 를 기억 할 뿐만 아니 라 데이터 상 태 를 기억 할 수 있 습 니 다. 생 성 기 는 스 트림 제어 구조 (명령 식 프로 그래 밍 에서 이 구 조 는 데이터 값 만 있 는 것 이 아니 라) 의 위치 도 기억 했다.연속 성 으로 인해 프레임 워 크 를 임의로 뛰 어 넘 을 수 있 습 니 다. 직접 호출 자의 컨 텍스트 (생 성기 처럼) 로 돌아 가지 않 기 때문에 일반적인 것 입 니 다.
4.wraper
def timeit(fn):

    import time

    def wrap(n):
        time.clock()
        fn(n)
        print "time used:" + str(time.clock())

    return wrap

@timeit
def fab(MAX):

    n, a, b= 0, 0, 1

    while n < MAX:
        print b
        a, b = b, a+b
        n+=1

fab(5)

참조 링크:
http://www.cnblogs.com/coderzh/archive/2010/04/30/python-cookbook-lambda.html(lambda) http://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/?cmp=dwnpr&cpb=dw&ct=dwcon&cr=cn_51CTO_dl&ccy=cn(yield) http://www.jb51.net/article/15717.htm(yield) http://blog.jobbole.com/28506/(yield) http://www.cnblogs.com/rhcad/archive/2011/12/21/2295507.html(wraper) http://www.cnblogs.com/huxi/archive/2011/03/01/1967600.html(wraper)

좋은 웹페이지 즐겨찾기