파이썬에서 목록에서 함수와 인수를 만들고 전달할 수있는 변수에 저장하는 방법이 있는지 알고 싶습니다. eval
예 :
def dummyfunction(title):
print "Hello %s" %(title)
이 함수를 호출하는 일반적인 방법은 다음과 같습니다. dummyfunction("John")
목록에 함수 이름과 인수가. 내 list1 = ['dummyfunction', 'John']
요구 사항은 문자열 인수 dummyfunction("John")
를 사용하기 eval
때문에 함수에 대한 입력으로 사용할 수있는 이 함수의 문자열 표현을 가져 오는 것 입니다.
우선, 가능하다면 함수의 이름을 넣는 대신 함수 자체를 목록에 넣으십시오.
sexpression = [dummyfunction,1,2,3]
sexpression[0](*sexpression[1:])
함수가 객체 메서드 인 경우 다음을 사용할 수 있습니다 getattr
.
strpression = ['dummyfunction',1,2,3]
getattr(myobj,strpression[0])(*strpression[1:])
알려진 모듈에있는 경우 대신 모듈 개체를 사용하여 똑같은 작업을 수행 할 수 있습니다. myobj
이름으로 함수를 조회 할 수 있기 때문에 함수 eval
를 호출하는 데 사용할 이유가 없습니다 . 하지마.
마지막으로, 이름으로 조회하기 위해 임의의 함수를 함께 수집하려면 다음을 수행 할 수 있습니다.
namespace = {'dummyfunction': dummyfunction}
#or
namespace = {f.__name__:f for f in [dummyfunction]}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다