2016-11-26 2 views
0
def one(): 
    if(slist[0] == 'a'): 
     first = 3 

Этот код на моем номере "number.py", и я повторяю его для каждой буквы алфавита. Этот файл импортируется в основной файл Я запуск.Почему я получаю и ошибаюсь (NameError name 'first' not defined

import number 
from number import * 
if(len(number.string) == 1): 
    number.one() 

print(number.first) 

Этот код находится на моем главном файле и должен напечатать «3», если вы типа «а», когда он спрашивает вас, что вы хотели бы, чтобы декодировать

ответ

1

первую переменную является локальным, чтобы функционировать по умолчанию, он больше не будет существовать после выхода из функции, объявите его глобальным, чтобы сделать его доступным вне functio n

И вам может не понадобиться строка from number import *, так как вы должны получить доступ из пространства имен. Его не рекомендуется использовать import * также, чтобы избежать засорения пространства имен

first=None 
def one(): 
    global first 
    if(slist[0] == 'a'): 
     first = 3 
1

Иным решения может быть, чтобы вернуть first переменные, так что вы можете использовать его в main, как вы хотите.

я покажу вам:

def one(): 
    if(slist[0] == 'a'): 
     first = 3 
     return first 
     ''' you could use this instead ''' 
     #return 3 

, а затем обратно в ваш главный:

import number 
if(len(number.string) == 1): 
    first = number.one() 

print(first) 
Смежные вопросы