2013-07-02 3 views
0

Я приношу несколько дней работают на питоне исходя из Matlab и у меня есть следующие сомнения:Лучшего способ поставить ФУНКЦИИ питон

у меня был программа MatLab с большим количеством функций, определенных в конце моего м-файл , Matlab распознает эти функции, даже если я их вызываю в начале, и они определены в нижней части моего кода.

Теперь, с помощью python, я не знаю, что является лучшим способом поставить функции, потому что python должен знать определение функций перед их вызовом. Я не хочу создавать новый файл для каждой функции. Я хотел бы объединить все функции, но я не могу понять это. Надеюсь, вы можете мне помочь.

Thx,

ответ

5

Другим способом вы можете иметь все функции, чтобы добавить функцию, которая делает все, что вы хотите это сделать:

def main(): 
    #do stuff 
    f() 
    g() 
    ... 

И добавить к этому конец файла:

if __name__ == '__main__': 
    main() 

Это будет выполняться только в том случае, если файл является основным файлом. Если вы импортируете файл из другого файла, он не будет выполнять весь код в main().

+1

Я бы предпочел этот метод, просто потому, что он не нуждается в создании других файлов. Вы можете всегда выполнять функции рефакторинга позже, если вам нужно поделиться ими между модулями. – acjay

+0

Мне нравится этот способ, и он отлично работает. Спасибо. Для меня теперь это больше похоже на стиль matlab, потому что у меня есть основной код сверху и функции в конце файла. – tete

2

Вы можете поместить все функции в functions.py и включить его в каждом документе

import functions 

, то вы можете вызвать функцию путем добавления префикса functions.

+0

Проще, чем ожидалось! Точно используя: из функций import * Thx! – tete

+0

Это очень просто. Пожалуйста! – zurfyx

+3

@tete вам следует избегать использования 'from functions import *', как описано в http://stackoverflow.com/q/2386714/1980029. – robjohncox

2

На самом деле python не требует, чтобы вы объявляли функции в любом конкретном порядке, чтобы вызвать их.

Например, это работает отлично:

def a(): 
    return b() 

def b(): 
    return 1 

a() 
+0

Это правда, но мне не нравятся функции в верхней части кода. Спасибо. – tete

+0

Также важно отметить, что Python генерирует исключение, если у вас есть вызов 'a()' над определением 'b()'. –

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