Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
函数外部的Python访问变量_Python_Python 2.7_Csv - Fatal编程技术网

函数外部的Python访问变量

函数外部的Python访问变量,python,python-2.7,csv,Python,Python 2.7,Csv,提前感谢您查看@此问题: 我试图解析一个CSV文件,并返回某些字段的值。当作为脚本内联时,代码可以完美运行,但是当我尝试创建一个可以被我的应用程序中的其他模块访问的函数时,我从csv文件中提取的变量(键/值)遇到了问题 解析CSV的代码(parseCsv.py): 我曾尝试对组、企业和工作列表使用global参数;并尝试添加返回组、返回工作列表、返回企业 无论语法如何,我都无法访问此函数之外的组、企业或工作列表变量。我需要在我的应用程序的其他部分操纵这些结果。如果我在函数中添加打印组,它会正常工

提前感谢您查看@此问题:

我试图解析一个CSV文件,并返回某些字段的值。当作为脚本内联时,代码可以完美运行,但是当我尝试创建一个可以被我的应用程序中的其他模块访问的函数时,我从csv文件中提取的变量(键/值)遇到了问题

解析CSV的代码(parseCsv.py):

我曾尝试对组、企业和工作列表使用
global
参数;并尝试添加
返回组、返回工作列表、返回企业

无论语法如何,我都无法访问此函数之外的组、企业或工作列表变量。我需要在我的应用程序的其他部分操纵这些结果。如果我在函数中添加
打印组
,它会正常工作,但从函数外部我会得到一个
[]。
我也尝试将parse_csv作为类的方法,添加一个
self
和一个
init
,但没有成功

作为参考,我使用
parse\u csv(csvfilename)
从另一个文件调用它,它导入文件并正确读取


我相信这是一个非常简单和快速的东西,我错过了,但盯着它这么久,我就是看不见,任何帮助将不胜感激

您应该将列表作为参数传递给函数,以便修改它们。下面是它的工作原理:

foo = []

def f(arg):
  arg.append(1)
  arg.append(2)

f(foo)
print foo # output: [1, 2]
这是因为列表是可变的,您可以通过引用传递它们

因此,您需要实现以下功能:

def parse_csv(filename, gr, ent, work):
  ...
  gr.append(123)
  work.append(row)
  ...
然后您可以从每个文件调用它,如下所示:

groups      = []
enterprise  = []
workinglist = []

parse_csv(filename, groups, enterprise, workinglist)

print groups # should contain the data read from CSV

为了便于识别您的问题,请删除所有不相关的代码,直到您有一个再现问题的最小示例。(通常与输出一起)。事实上,您的代码可能依赖于外部文件,如csv内容,这会阻止任何人复制您的问题。这很好!!非常感谢你。在我获得更多分数之前,我无法击败你,但一旦我有机会,我肯定会击败你!
groups      = []
enterprise  = []
workinglist = []

parse_csv(filename, groups, enterprise, workinglist)

print groups # should contain the data read from CSV