b = a
b
는 호출이 (NO 오버) 빠르다 의미하지만 내성 (예컨대 help(b)
)는 이름 a
및 a
의 참조 문을 보여줄 것이다. 후자의 문제가 특정 애플리케이션 (예를 들어, 일종의 튜토리얼)을위한 킬러가 아닌 한, 일반적으로 속도 이점이 이긴다.
이제
def a(something):
return something*something
#Case I - referencing
b1 = a
#Case II - creating a new function to call the first
def b2(something):
return a(something)
: ref.py에
$ python -mtimeit -s'import ref' 'ref.a(23)'
1000000 loops, best of 3: 0.716 usec per loop
$ python -mtimeit -s'import ref' 'ref.b1(23)'
1000000 loops, best of 3: 0.702 usec per loop
$ python -mtimeit -s'import ref' 'ref.b2(23)'
1000000 loops, best of 3: 0.958 usec per loop
즉, b1
(순수 참조) 호출 그냥 빨리 a
호출 (실제로는 더 빨리이 실행의 2 %를 표시하지만, 그건 등 잘 측정의 "소음"내에서 b2
(내부적으로는 a
이라고하는 완전히 새로운 기능)을 호출하면 20 %의 오버 헤드가 발생하지만 킬러는 아니지만 일반적으로 성능 희생으로 인해 특정 귀하의 유스 케이스에 중요합니다.
왜 이름 대신에 이름을 언급하는 대신에이 중 하나를하고 싶습니까? – danben
필자는 각 모듈이 특정 모듈을 구현해야하는 일종의 플러그인 유형을 만들고 있지만 대부분의 경우 작동 할 수있는 미리 준비된 모듈을 사용할 수 있습니다. –