【问题标题】:Accessing a Python variable in a list访问列表中的 Python 变量
【发布时间】:2010-11-29 08:38:03
【问题描述】:

我认为这可能是一件非常简单的事情,但我会很感激一个提示:

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

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

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

你是怎么处理的?

【问题讨论】:

  • 列表缺少“[”大括号?
  • 不要使用list 作为变量名,因为它会影响内置列表类型。
  • 1) 包括导入失败的回溯,2) 提供更多上下文

标签: python list variables


【解决方案1】:

您刚刚指出了全局变量的一个(无数个)问题:不使用全局变量是解决这个问题以及许多其他问题的最佳解决方案。如果您仍然错误地认为必须使用全局变量,请将占位符(例如None)放在您还不知道的值会去的地方,并在最终知道时分配正确的值。

【讨论】:

    【解决方案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】:

      可能是 put 函数而不是 value,这些函数应该在运行时调用并且会给出正确的结果,例如

      def getValue1Func():
          return getValue.value1
      
      my_list = [ "table_to_insert_to" ],["column1","column2"],[getValue1Func],["value2"]]
      

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

      例如

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

      编辑:对于 python

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-22
        • 1970-01-01
        • 1970-01-01
        • 2013-09-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-29
        相关资源
        最近更新 更多