我是python的新手,我想知道是否有一种方法可以访问列表或词典,而该列表或词典的数据已通过其他函数存储在其中。
我想知道是否有办法让列表成为全局列表,以便可以在函数或任何其他替代解决方案之外访问它。
def upload():
numlist = [1,2,3,4]
def add():
for i in numlist:
print(i)
答案 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)
否,您不能在其功能之外访问局部变量。
一个选择是定义一个包含以下内容的类:
这将允许您定义可以由该类中的所有函数访问的局部变量,而不必将值从一个函数返回到下一个函数。
示例:
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()