2011-08-09 5 views
3

기본적으로 함수를 호출 할 때 사전처럼 현재 범위를 확장하고 싶습니다.현재 범위를 파이썬에서 kwargs로 사용하기

나는이 어딘가에 대해 뭔가를 본 기억이 있지만 어디서 어떻게해야하는지 기억이 안납니다. 여기

def bar(a, b, c, d, e, f): 
    pass 

def foo(a, b, c, d, e, f): 
    # Instead of doing this 
    bar(a, b, c, d, e, f) 
    # or 
    bar(a=a, b=b, c=c, d=d, e=e, f=f) 
    # I'd like to do this 
    bar(**local_scope) 

내가 일을 상상 AM 또는이 정말 할 수있는 간단한 예입니다?

답변

6

locals() (또는 필요한 경우에 따라 globals())을 사용할 수 있으며, 변수 이름을 값에 매핑하는 사전을 반환합니다. foo는 당신이 게시 된 다른 두 가지 예는 더 나은 것을 모든 주민을 확대하는 것은 나쁜 생각보다 다른이

def foo(**kwargs): 
    bar(**kwargs) 

처럼 기록 된 경우

bar(**locals()) 
+0

Perfect! 'foo' 함수에 몇개의 지역 변수를 추가했기 때문에'bar,'에 인수 목록에'* args, ** kwargs'를 추가해야했습니다. –

3

.

+0

첫 번째 함수에서 ** kwargs를 사용할 수없고, 기능 –