2015-12-09 3 views
1

Я попытался сделать:Python - Глобальный массив

x = [] 
def func(): 
    for y in range(0,5): 
     x.append(y) 

def func2(): 
    for i in range(0, 5): 
     print x[i] 

И я получаю ошибку:

IndexError: list index out of range

Как я могу поставить глобальный массив х? И доступ в func2 к значению массива x.

+1

Обратите внимание, что ваши коды не запускаются. Не существует 'y', и вам нужно поместить скобки'() 'после объявления функции (' def func(): '). – EelkeSpaak

+0

Этот код является неполным, а также является синтаксически недействительным .. Как вы называете func и func2? Вы действительно добавляете пять элементов в x? –

+0

Я предполагаю, что это происходит в 'print x [i]' ?! Ну, есть ли в массиве 5 элементов ...!? – deceze

ответ

2

Это не имеет значения, если вы объявили func() раньше, чем func2()

Что дело в том, что вы должны позвонить func() перед тем func2(), в противном случае вы получите ошибку, потому что ваш массив все еще пуст.

Так что:

x = [] 
def func(): 
    for y in range(0,5): 
     x.append(y) 

def func2(): 
    for i in range(0, 5): 
     print x[i] 
func() 
func2() 

РАБОТЫ!

Но это:

x = [] 
def func(): 
    for y in range(0,5): 
     x.append(y) 

def func2(): 
    for i in range(0, 5): 
     print x[i] 
func2() 
func() 

НЕ!

2

Список указателей не связан с тем, что при вызове функции func2() у вас нет элементов в списке.

, так как вы зацикливание в диапазоне диапазона (0,5) инициализирует список с x = [0] * 5

x = [] 
def func(): 
    for y in range(0,5): 
     x.append(y) 

def func2(): 
    for i in range(0, 5): 
     print x[i] 

func() 
func2() 

если вы звоните func2() фактически не включая элементы с вашей функцией FUNC(), очевидно, будет print x[i] вызывать исключение из исключения Bound, потому что список пуст.

+0

* «Нет» * или ** менее 5 **. – deceze

2

Решение первоначального вопроса, который выглядел так:

x = [] 

def func(): 
    y = 2 
    x.append(y) 

def func2(): 
    for i in range(0, 5): 
     print(x[i]) 

вызовов func 5 раз и она работает:

for n in range(5): 
    func() 

func2() 

Выход:

2 
2 
2 
2 
2 

Ваш список x был еще пустой. Вызов func прилагается 2. Весь код не очень полезен, но он демонстрирует, как он работает.

4

Вы получите эту ошибку, если вы звоните func2 перед вызовом func

>>> x=[] 
>>> func2() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "<stdin>", line 3, in func2 
IndexError: list index out of range 
>>> func() 
>>> func2() 
0 
1 
2 
3 
4 
Смежные вопросы