2009-05-12 4 views
18
자체 내부

에서 함수에 대한 참조를 받고 :파이썬 : 나는 함수 정의하면

def f(x): 
    return x+3 

을 내가 할 수있는 함수의 속성과 이후 저장소 개체, 그래서 같은 :

f.thing="hello!" 

나는 것 함수 자체의 코드 내부에서이를 수행하는 것이 좋습니다. 문제는, 내부에서 함수에 대한 참조를 얻으려면 어떻게해야합니까?

+2

왜 이것을 필요로합니까? 너 뭐하려고? –

+1

또한보십시오 http://stackoverflow.com/questions/3109289/how-can-python-function-access-its-own-attributes – mykhal

답변

19

마찬가지로 이름을 사용하십시오. 당신이 메모이 제이션을하려고하는 경우

>>> def g(x): 
... g.r = 4 
... 
>>> g 
<function g at 0x0100AD68> 
>>> g(3) 
>>> g.r 
4 
+0

@ 로저 : 글쎄, 그건 내 통역관이 보여준 방식 이었어. – SurDin

+0

혼란 스러웠다. 출력 형식에 따라 다르지만 코드를 인식하고 대답은 견고합니다 (+1). 이것은 "평범한"Python REPL이 보여주는 것이며, 더 많은 사람들에게 더 알아볼 수 있어야합니다. 어떤 통역사를 사용 했습니까? –

3

, 당신은 기본 매개 변수로 사전을 사용할 수 있습니다

def f(x, memo={}): 
    if x not in memo: 
    memo[x] = x + 3 
    return memo[x] 
2

또는 폐쇄 사용

def gen_f(): 
    memo = dict() 
    def f(x): 
     try: 
      return memo[x] 
     except KeyError: 
      memo[x] = x + 3 
    return f 
f = gen_f() 
f(123) 

다소 좋네요을 이럴