如何从其他功能访问功能中的列表/词典

时间:2019-10-28 17:24:46

标签: python

我是python的新手,我想知道是否有一种方法可以访问列表或词典,而该列表或词典的数据已通过其他函数存储在其中。

我想知道是否有办法让列表成为全局列表,以便可以在函数或任何其他替代解决方案之外访问它。

def upload():
    numlist = [1,2,3,4]

def add():
   for i in numlist:
       print(i)

4 个答案:

答案 0 :(得分:4)

通常来说,全局变量不是很出色,因此最好有一个函数来创建并返回列表,然后在第二个函数中使用它。更好的是,您可以拥有一个协调两个独立部分的第3个功能-创建列表和处理列表:

def create_numlist(): 
    numlist = [1,2,3,4]
    return numlist

def print_numbers(numbers):
    for i in numbers:
        print(i)

def main():
    numbers = create_numlist()
    print_numbers(numbers)

现在,加载/创建列表的功能与对该列表执行某些操作的功能完全分开。

答案 1 :(得分:1)

一种选择是将其作为参数传递,将所有内容挂钩

def add(add_list):
  for value in add_list:
    print(value)

def upload():
  numlist = [1, 2, 3, 4]
  add(numlist)

答案 2 :(得分:0)

否,您不能在其功能之外访问局部变量。

一个选择是定义一个包含以下内容的类:

  1. 您正在使用的变量
  2. 需要访问的功能 这些变量。

这将允许您定义可以由该类中的所有函数访问的局部变量,而不必将值从一个函数返回到下一个函数。

示例:

class Upload:
    def __init__(self):
        self.numlist = [1,2,3,4]

    def add(self):
        for i in self.numlist:
            print(i)

foo = Upload()
foo.add()

输出:

1
2
3
4

答案 3 :(得分:-1)

是的,正如您所猜测的,您可以将列表设置为全局。

您只需要在函数外部声明它(否则,它仅是函数的 local 。)

EXC_BAD_ACCESS

全局变量有些被忽略。您可能会更深入地研究此主题,例如Why are global variables evil?

因此,最好尝试对代码进行结构化,以便不需要全局变量。例如:

numlist = None

def upload():
    global numlist
    numlist = [1,2,3,4]

def add():
    for i in numlist:
        print(i)

upload()
add()