ссылаясь на массивы из другой функции - PullRequest
0 голосов
/ 18 октября 2018

У меня есть код с несколькими пользовательскими функциями.Я хочу, чтобы одна из функций использовала выходные данные другой, но, очевидно, Python не разрешит мне следующий код ниже.Кажется, Python не нравится тот факт, что array1 не определен внутри самой функции2.Какие-либо предложения?Сначала вызывается function1, поэтому моя логика заключалась в том, что array1 должен быть определен до вызова функции 2 ... но, возможно, я неправильно понимаю, как работает 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 голосов
/ 18 октября 2018

Возможная реализация ниже:

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) 
0 голосов
/ 18 октября 2018

Когда python ищет переменную, он следует LEGB rule

, поэтому он будет искать в Local, затем в Enclosure, затем в Global и, наконец, во встроенных файлах, так что составить ваш список (массив)) необходимо сделать его глобальным

подход 1

создать в функции 1 и передать его функции 2

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()
0 голосов
/ 18 октября 2018

Сработает следующее: передайте массив, который 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...