我有一些带有几个用户定义函数的代码。我希望其中一个函数使用另一个函数的输出,但是显然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()
答案 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()