2009-09-18 2 views
0

목록에 파이썬 변수를 액세스,하지만 난 힌트 감사하겠습니다 :내가이 아마 정말 간단 뭔가 생각

list = [ "table_to_insert_to" ],["column1","column2"],[getValue.value1],["value2"]] 
: 나는 약간 일부 데이터베이스 삽입 문을 개최 파이썬 목록을 사용하고

문제는 런타임까지 평가되지 않는 값 중 하나이기 때문에 페이지를 실행하기 전에 함수를 가져올 때 중단됩니다.

어떻게 처리합니까?

+0

목록에 '['중괄호가 누락 operator.isCallable를 사용해야합니까? – cmcginty

+5

'list'를 변수 이름으로 사용하지 마십시오. 내장리스트 유형을 음영 처리하기 때문입니다. – mhawke

+4

1) 실패한 가져 오기의 추적을 포함합니다. 2) 더 많은 컨텍스트를 제공합니다. – retracile

답변

2

함수에서 랩핑하고 데이터를 초기화 할 때 함수를 호출하면됩니다.

# module.py 

def setstatement(value1): 
    global sql 
    sql = ['select', 'column1', 'column2', value1] 

# some other file 
import module 
module.setstatement(1) 

# now you can use it. 
>>> module.sql 
['select', 'column1', 'column2', 1] 
3

방금 ​​전역 변수에 대한 문제가 지적되었습니다. 전역 변수를 사용하지 않는 것이이 문제와 다른 많은 문제에 대한 최상의 해결책입니다. 여전히 실수로 전역 변수를 사용해야한다고 생각하는 경우 아직 알지 못하는 값이있는 장소에 자리 표시 자 (예 : None)를 넣고 마지막으로 알게되면 올바른 값을 지정하십시오.

1

값 대신 함수를 넣을 수 있습니다.이 함수는 런타임에 호출해야하며 올바른 결과를 제공해야합니다. 지금

def getValue1Func(): 
    return getValue.value1 

my_list = [ "table_to_insert_to" ],["column1","column2"],[getValue1Func],["value2"]] 

난 당신이 목록을 (난 당신이 모든 문제를 명시하면 더 좋은 대안이 될 것이라고 생각)를 사용하는 방법을 모른다, 단지 값이 호출 할 수 있는지 확인하고 값

를 얻기 위해 호출 목록을 사용하는 동안 너무

예 :

if isinstance(val, collections.Callable): 
    val = val() 

편집 : 파이썬 < 2.6를 들어,