2017-04-20 1 views
-1

을 keyworded 간단한 람다파이썬은 여기에 람다 함수

var= lambda x: x*x 
print(var(4)) 

간단 내가 수학을 완료하기 위해 변수를 사용하는 VAR를 람다 객체를 저장 표현입니다.

  1. 내 질문 :

    나는 함수의 람다의 같은 keyworded 인수를 사용하여 특정 작업이 코드에서

내가 형식 오류를 얻을 수 프리폼 적절하게 사용하는 만들려면 어떻게해야합니까 'STR'을 개체를 호출 할 수 없습니다.

def test1(**kwargs): 

     for fart in kwargs: 

      print(fart) #output is == key 
      fart(4) #fart(4)==TypeError 

    test1(key=lambda x: x*x) 
+1

:이 작업을 수행하는 쉬운 방법이 물론

for fart in kwargs: print(fart) print(kwargs[fart[](4)) 

: 당신이 정말로 람다에서 얻고 싶은 경우에

는, 당신은 해당 키에 kwargs 내에서 값에 액세스해야 당신의 요소가 방귀라는 이유는 무엇입니까? lol –

+0

OP는 그 일을하려고 몇 시간 씩 짜증났다. 내가 더 가혹한 변수 이름을 사용했을 것이다. –

+0

나는 그 변수 내에 4GB 이상의 데이터를 보유하려고 시도한 후에'r'을 포함해야한다고 생각했다. – inspectorG4dget

답변

2

kwargsdict이기 때문에이 오류가 발생합니다. 귀하의 경우에는,이 딕셔너리는 다음과 같습니다 당신이 dict을 반복 할 때

{'key': lambda x: x*x} 

그래서, 당신이 정말로 kwargs의 경우, 문자열 키, 반복된다 (문자열이 호출되지 않습니다).

for fart, shart in kwargs.items(): 
    print(fart) 
    print(shart(4)) 
1

kwargs은 사전입니다. 사전 반복은 키 값을 제공합니다.

for fart in kwargs: 
    print(kwargs[fart](4)) 

또는 값을 : 당신이 반복 WHN 모든 키에 대한 람다 함수를 기대한다면

, 단지 items() 또는 values()를 사용하여 람다를 호출 할 필요

더 합리적
for fart in kwargs.values(): 
    print(fart(4)) 

, 키를 사용하는 것입니다. key :

def test1(**kwargs): 
    print(kwargs["key"](4)) 

test1(key=lambda x: x*x) 

여기에 인쇄됩니다 16