2017-11-13 1 views
2

그래서 파이썬 3.6에서 user_input을 기반으로 특정 기능을 선택하고 실행하는 프로그램을 만들고 있습니다.사전에서 함수 실행 | Python 3

코드는 어떤 기능을 실제로 실행할지 결정할 수 있습니다. 기능도 기능 addition()가 실행되지 않습니다이 코드를 사용하여

def addition(): 
    1+1 

user_input = input("What operator do you wish to use?") 

myOperators = {"Addition":addition} 

if user_input in myOperators: 
    myOperators.get(user_input) 

작동합니다.

if user_input in myOperators: 
    print(myOperators.get(user_input)) 

<function addition at 0x7f0973026620>

+3

이 될 것입니다 때문에, 함수 객체를 반환 myOperators.get(user_input) 귀하의 경우에는

. –

답변

4

파이썬 주위에 통과 목록과 사전에 저장할 수있는 객체로 기능 취급을 인쇄 : 올바른 값을 선택하는 난이하는 경우에 때문에, 나는 확인할 수 있습니다. 함수를 실제로 호출하려면 객체 뒤에 괄호를 사용해야합니다. 그것은 당신이 (마지막에 전화로) 기능 때문에`myOperators.get (USER_INPUT를)()`호출해야

myOperators.get(user_input)() 
+0

정말 고마워요! 나는 이것을 며칠 동안 애써왔다. –

+0

가능한'KeyError'가'TypeError : 'NoneType'object is not callable '보다 디버깅하기 쉬울 것이므로'get' 대신에'__getitem__' (대괄호)를 사용해야합니다. – timgeb