2016-12-12 7 views
0

기능 python3.x 내부에서 작업하지하지만 exec()가 함수 내에서 문자열을 실행하지 않는 것 같습니다 :간부는() 나는이 코드를 실행하려고

def abc(xyz): 
    for i in fn_lst: 
     s = 'temp=' + i + '(xyz)' 
     exec(s) 
     print (temp) 

abc('avdfbafadnf') 

오류 내가받은 오전 :

['has_at', 'has_num' ...]

exec() 경우에 대한 대안을 알려 주시기 바랍니다 :

NameError         Traceback (most recent call last) 
<ipython-input-23-099995c31c78> in <module>() 
----> 1 abc('avdfbafadnf') 

<ipython-input-21-80dc547cb34f> in abc(xyz) 
     4   s = 'temp=' + i + '(word)' 
     5   exec(s) 
----> 6   print (temp) 

NameError: name 'temp' is not defined 

fn_lst 는 함수 이름의 목록, 즉이다 그러한 시나리오에서 가능합니다.

fn_lst = [has_at, has_num, ...] 

을하고 통화 직접 수행 :

답변

0

대신 함수 이름으로 exec를 사용하는 단지 목록에 함수 객체를 유지

def abc(xyz): 
    for i in fn_lst: 
     temp= i(xyz) 
     print(temp)