당신은 당신이 원하는 것을 할 수 있습니다. 함수 srn
을 정의
import inspect
def srn(expr):
"""Sets the results name to the variable *name* of `expr`"""
cf = inspect.currentframe()
of = inspect.getouterframes(cf)[1]
fs = inspect.getframeinfo(of[0]).code_context[0].strip()
# name of FIRST parameter
try:
args = fs[fs.find('(') + 1:-1].split(',')
n = args[0]
if n.find('=') != -1:
name = n.split('=')[1].strip()
else:
name = n
expr.resultsName = name
except IndexError:
pass
return expr
그런 my_number = Word(nums)
호출 후 :
srn(my_number)
및 my_number
는 "my_number
"resultsName
으로 포함되어 있습니다.
면책 조항 1 :이 접근법은 잘 작동하지만 꽤 위험하고 파이썬 내부 깊숙이 잠입하므로 위험 부담은 따로 둡니다.
면책 조항 2 :이에 대한 아이디어는 내되지 않습니다 - I에 유래에서 어딘가에있어하지만 난 setResultsName`이 *의 수와 * 사본을 반환`것을 정확히 어디에 ...
참고 지금은하지 않습니다 원래 표현식이므로 하위 수준 표현식을 상위 수준 표현식으로 어셈블 할 때 사본을 사용해야합니다. – PaulMcG
감사합니다. 이 단축키는 다른 어떤 기능과 작동합니까? 예 : 'expression = Forward() ('expression')'이라고 쓸 수 있습니까? –
AFAIK 당신은 _all_ pyparsing 표현식을 위해 그것을 사용할 수 있어야합니다. 문법이 복잡 해지면 정말 편리합니다! – Hooked