사용자 도구

사이트 도구


research:pythoncallbyname

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

다음 판
이전 판
research:pythoncallbyname [2013/05/23 04:59] – 새로 만듦 changwooresearch:pythoncallbyname [2014/10/09 21:24] (현재) – 바깥 편집 127.0.0.1
줄 36: 줄 36:
 간단한 코드를 통해 예를 들어 보자 간단한 코드를 통해 예를 들어 보자
 <code python obj_by_name.py> <code python obj_by_name.py>
-#coding: utf-8 +#coding: utf-8
 def criteria_1(param_1): def criteria_1(param_1):
  print 'criteria 1'  print 'criteria 1'
  print 'param_1:', param_1  print 'param_1:', param_1
  print ''  print ''
- +
 def criteria_2(param_1, param_2): def criteria_2(param_1, param_2):
  print 'criteria 2'  print 'criteria 2'
줄 47: 줄 47:
  print 'param_2:', param_2  print 'param_2:', param_2
  print ''  print ''
- +
 def criteria_3(param_1, param_2, param_3): def criteria_3(param_1, param_2, param_3):
  print 'criteria 3'  print 'criteria 3'
줄 59: 줄 59:
  func   = globals()[func_name]  func   = globals()[func_name]
  params = {}  params = {}
- dispat = None +
- +
  for var in var_list:  for var in var_list:
  params[var] = getattr(varcls, var)  params[var] = getattr(varcls, var)
- +
  func(**params)  func(**params)
  
줄 71: 줄 70:
  self.param_2 = 12.25  self.param_2 = 12.25
  self.param_3 = (1, 2, 3)  self.param_3 = (1, 2, 3)
- +
 # test # test
 # function names and variable names # function names and variable names
줄 81: 줄 80:
 call_wrapper('criteria_2', ['param_1', 'param_2']) call_wrapper('criteria_2', ['param_1', 'param_2'])
 call_wrapper('criteria_3', ['param_1', 'param_2', 'param_3']) call_wrapper('criteria_3', ['param_1', 'param_2', 'param_3'])
 +
 </code> </code>
  
줄 93: 줄 93:
 딕셔너리 구조체를 위처럼 입력하는 구문은 매우 톡특한 파이썬 문법이다. (다른 언어도 이러한 형식을 지원하는지?) 딕셔너리 구조체를 위처럼 입력하는 구문은 매우 톡특한 파이썬 문법이다. (다른 언어도 이러한 형식을 지원하는지?)
  
-그러므로 초기 function_names, var_name에 대한 룰을 보다 발전시키면 미리 함수 호출 및인자값을 스크립트화하여 원하는 타이밍에 맞춰 함수호출을 자유자재로 유연히 호출할 수 있습니다.+그러므로 초기 function_names, var_name에 대한 룰을 구체적으로 정의하면 미리 함수 호출 및 인자값을 스크립트화하여 원하는 타이밍에 맞춰 함수호출을 자유자재로 유연히 호출할 수 있을 것이다. call_wrapper 내부에서 필요한 객체에 접근하기 위해 부가적으로 locals, getattr 등의 함수 호출이 발생하나, 딕셔너리 객체에 의한 검색이므로 프로그램의 유연성에 비해 지불하는 오버헤드는 매우 미미하다고 볼 수 있다.
  
research/pythoncallbyname.1369285180.txt.gz · 마지막으로 수정됨: 2014/10/09 21:23 (바깥 편집)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki