访问列表中的Python变量

时间:2009-09-18 01:50:36

标签: python list variables

我认为这可能非常简单,但我很欣赏这一提示:

我使用python列表来保存一些数据库插入语句:

list = [ "table_to_insert_to" ],["column1","column2"],[getValue.value1],["value2"]]

问题是其中一个值直到运行时才被评估 - 所以在页面运行之前,它会在尝试导入函数时中断。

你是如何处理的?

3 个答案:

答案 0 :(得分:3)

你刚刚指出了全局变量中的一个(非常多)问题:不使用全局变量是解决这个问题的最佳解决方案。如果您仍然错误地认为必须使用全局变量,请将占位符(例如None)放在您尚不知道的值所在的位置,并在最终知道它时分配正确的值。 / p>

答案 1 :(得分: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]

答案 2 :(得分:1)

可以放置函数而不是值,这些函数应该在运行时调用,并给出正确的结果,例如。

def getValue1Func():
    return getValue.value1

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

现在我不知道你如何使用这个列表(我认为如果你陈述整个问题会有更好的选择),所以在使用list时只检查值是否可调用并调用它来获取值

e.g。

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

编辑:for python< 2.6,你应该使用operator.isCallable