파이썬 테크닉 100문제(9)

14402 단어 파이썬 팁

  • 1.귀속을 사용하지 않고 곱셈 표현식을 어떻게 효율적으로 쓰는가
  • 2.파이썬은 언제 장식기를 실행합니까
  • 3.다음 문장의 집행이 틀렸는지 판단
  • 4.함수 중의 국부 변수를 어떻게 전역 변수로 강제로 바꿉니까
  • 5.패킷에서 숫자, 문자열, 모듈 등 변하지 않는 요소에 대한 업데이트
  • 6.Python2는 외부 변수에 대한 접근 오류를 어떻게 해결합니까
  • 7.테스트 코드 실행 시간
  • 8.귀속 알고리즘을 어떻게 최적화하고 실행 시간을 줄이는가
  • 9.두 객체의 값(객체에 저장된 데이터)이 동일한지 비교
  • 10.두 대상의 메모리 주소 id가 같은지 비교하기
  • 1. 귀속을 사용하지 않고 곱셈 표현식을 어떻게 효율적으로 쓰는가

    from functools import reduce
    from operator import mul
    def fact(n):
        return reduce(nul, range(1 ,n+1))
    print(fact(5))
    120    
    

    2. 파이썬은 언제 장식기를 실행합니까

    registry = []
    
    def register(func):
        print('running register(%s)' % func)
        registry.append(func)
        return func
    
    @register
    def f1():
        print('running f1()')
    
    @register
    def f2():
        print('running f2()')
    
    def f3():
        print('running f3()')
    
    def main():
        print('running main()')
        print('registry ->', registry)
        f1()
        f2()
        f3()
    
    if __name__ == '__main__':
        main()
    
    running register(<function f1 at 0x0000027913AA8708>)
    running register(<function f2 at 0x0000027913AA8E58>)
    running main()
    registry -> [<function f1 at 0x0000027913AA8708>, <function f2 at 0x0000027913AA8E58>]
    running f1()
    running f2()
    running f3()
    

    3. 다음 문장의 집행이 틀릴지 판단

    b = 3
    def fun(a):
        print(a)
        print(b)
        b = 7
    fun(2)    
    

    4. 함수 중의 국부 변수를 전역 변수로 강제로 바꾸는 방법

    b = 3
    def fun(a):
        global b
        print(a)
        print(b)
        b = 7
    b = 5
    fun(2)
    2
    5    
    

    5. 클립에서 숫자, 문자열, 모듈 등 변하지 않는 요소에 대한 업데이트

    def make_averager:
        count = 0
        total = 0
    def averager(new_value):
        nonlocal count, total
        count += 1
        total += new_value
        return total / count
    return averager
    avg = make_averager()
    avg(10)
    10.0        
    

    6. Python2에서 외부 변수에 접근하는 오류를 어떻게 해결합니까

    https://www.python.org/dev/peps/pep-3104/
    

    7. 테스트 코드가 실행되는 시간

    import time
    t0 = time.time()
    for i in range(10000):
        pass
    t1 = time.time()
    print(t1 - t0) 
    
    t0 = time.perf_count()
    for i in range(10000):
        pass
    t1 = time.perf_count()
    print(t1 - t0)       
    

    8.귀속 알고리즘을 어떻게 최적화하여 실행 시간을 줄일 것인가

    import functools
    @functools.lru_cache()
    def fibonacci(n):
        if n < 2:
            return n
        return fibonacci(n-2)+fibonacci(n-1)
    fibonacci(6)
    8        
    

    9. 두 객체의 값(객체에 저장된 데이터)이 동일한지 비교

    a = [1, 2, 3]
    b = [1, 2, 3]
    a == b
    True
    

    10. 두 대상의 메모리 주소 id가 같은지 비교

    a = [1, 2, 3]
    b = [1, 2, 3]
    print(a is b)
    False
    

    좋은 웹페이지 즐겨찾기