从另一个函数引用数组

时间:2018-10-18 12:22:57

标签: python arrays function

我有一些带有几个用户定义函数的代码。我希望其中一个函数使用另一个函数的输出,但是显然Python不允许我使用下面的代码。 Python似乎不喜欢在function2本身中未定义array1的事实。有什么建议么?首先调用function1,所以我的逻辑是应该在调用函数2之前定义array1……但是也许我误解了Python的工作方式。 (这是实际代码的简化版本,但归结为相同的问题)

def function1():
    some_input=1
    some_other_input=2
    array1=[]
    array1.append(some_input)
    array1.append(some_other_input)


def function2():
    for i in range(len(array1)):
    print(array1[i])

function1()
function2()

3 个答案:

答案 0 :(得分:0)

以下将起作用,将function1()返回的数组传递到function2()中。另一种可能的方法是将array1声明为全局变量。

def function1():
    some_input=1
    some_other_input=2
    array1=[]
    array1.append(some_input)
    array1.append(some_other_input)
    return array1


def function2(arr):
    for i in range(len(arr)):
        print(arr[i])

arr = function1()
function2(arr)

答案 1 :(得分:0)

可能的实现如下:

def function1():
    some_input=1
    some_other_input=2
    array1=[]
    array1.append(some_input)
    array1.append(some_other_input)
    return array1


def function2(array):
    for i in range(len(array)):
        print(array[i])

array = function1()
function2(array) 

答案 2 :(得分:0)

当python搜索变量时,它遵循 LEGB 规则

因此它将先在Local中搜索,然后在Enclosure中搜索,然后在Global中搜索,最后在内建元素中搜索,因此要使您的列表(数组)可访问,您需要将其设置为Global

方法1

在function1中创建并将其传递给function2

def func1():
    arr=[]
    arr.append(1)
    return arr


def func2(arr):
    arr.append(2)
    print(arr)

arr = func1()
func2(arr)

方法2

将您的列表设为全局,并使用“ global”关键字进行访问

arr = []

def func1():
    global arr
    arr.append(1)

def func2():
    global arr
    arr.append(2)
    print(arr)

func1()
func2()