파이썬 테크닉 100문제(9)
14402 단어 파이썬 팁
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
from functools import reduce
from operator import mul
def fact(n):
return reduce(nul, range(1 ,n+1))
print(fact(5))
120
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
b = 3
def fun(a):
print(a)
print(b)
b = 7
fun(2)
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
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
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
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)
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
a = [1, 2, 3]
b = [1, 2, 3]
a == b
True
a = [1, 2, 3]
b = [1, 2, 3]
print(a is b)
False