2016-01-26 17 views
1

У меня возникла проблема с включением функции из другого файла в основной исполняемый скрипт. У меня слишком много функций, и мой основной скрипт стал слишком длинным и трудным для управления. Поэтому я решил переместить каждую функцию в отдельный файл и добавить/включить его. Я прочитал почти любой относительный пост здесь, чтобы решить мою проблему, но не повезло. Давайте посмотрим:Python как включить функцию из другого файла

main_script.py 
================== 
from folder.another_file import f_fromanotherfile 

class my_data: 
    MDList=[] 

work=my_data() 

def afunction(): 
    f_fromanotherfile() 
    return 

и

another_file.py 
===================== 
#In this file i've put just function code 
def f_fromanotherfile(): 
    a=[1,2,3,4] 
    work.MDList=a 
    return 

И это ошибка:

линия 11, в f_fromanotherfile work.MDList = а NameError: глобальное имя 'работы' не определен

Помогите мне пожалуйста

+1

Ни один из этих файлов не является даже синтаксически правильным Python (отсутствующие двоеточия). –

+0

Возможный дубликат [Как вызвать функцию из другого файла в Python?] (Http://stackoverflow.com/questions/20309456/how-to-call-a-function-from-another-file-in-python) – tinySandy

+0

Кажется, ваша проблема в том, что функция 'f_fromanotherfile()' не имеет доступа к 'work', о чем вам сообщает ошибка. 'work' должен быть определен в рамках' another_file.py' или, еще лучше, передать его как аргумент самой функции. – Reti43

ответ

1

s справиться с «работой» является его модуль main_script.py, поэтому вы не можете получить доступ к нему из другого модуля. Сделать 'работу' аргумент f_fromanotherfile вместо:

В another_file.py:

def f_fromanotherfile(work): 
    # function body stays the same 

В main_module.py:

def afunction(): 
    f_fromanotherfile(work) 
1

, потому что в another_file.py

#In this file i've put just function code 
def f_fromanotherfile(): 
    a=[1,2,3,4] 
    work.MDList=a 
    return 

работа - это не глобальная переменная. И тогда выполнение этого задания не может работать.

и должны изменить ур код: another_file.py

#In this file i've put just function code 
def f_fromanotherfile(): 
    global work 
    a=[1,2,3,4] 
    work.MDList=a 
    return 

с глобальным ключевым словом и можно сказать переменную в так называемой глобальной области видимости и сделать ур назначения.

PS: что-то вроде ключевого слова extern in C?

+0

Вы уверены, что не забыли что-то? Ваше предлагаемое решение похоже на то, что у OP уже есть. – Reti43

+0

Мне нужно hv some typo.thx – herokingsley

Смежные вопросы